登陆 注册

python中map函数的用法(Python列表常用操作小技巧)

友优资源网 2022-11-04 18:50:14 695人围观 ,发现0个评论

1前言

在上一篇文章中,我们回顾了Python元组的常见操作技巧。在本文中,我们继续讨论Python中另一种常用的数据类型——List。

像元组一样,列表是可以用方括号[和]创建的序列。列表中的值通常称为元素,元素的数据类型可以不同。比如test_list = [0,1,1,' a ',' b']就可以成功创建一个列表。

与元组不同,列表是可变序列,因此序列的可用操作会更加灵活。接下来,让我们回顾一下最常用的列表操作。

2列出常见操作

2.1遍历列表

以列表people = ['Adam ',' Nick ',' Tony']为例,可以使用for循环来遍历:

for i in people: print(i)

当列表需要更新时,使用下标遍历更方便:

for i in range(len(people)): people[i] += '_suffix'

2.2切片

和元组一样,列表的元素可以通过切片获得(Python的下标从0开始):

print(people[:2])

输出是:

['Adam','Nick']

2.3删除元素

A.pop方法可以返回要删除的值,用下标删除,或者删除最后一个元素:a = people.pop(2)或者a = people.pop(),A的值会是' Tony ',原列表会删除对应的元素。

B.如果不需要使用删除的值,del是个不错的主意:del people[0],那么people list就会变成['Nick ',' Tony']。

C.remove方法将删除列表中要删除的第一个元素。例如,在test_list.remove(1)操作之后,列表将变成test_list = [0,1,' a ',' b']。请注意,remove方法不返回值。

2.4列表和字符串

并且列表字符串可以灵活转换,比如将字符串转换成列表:

# 将字符串转化为列表name = 'Adam is very cool'name_list_1 = list(name)print(name_list_1)# Split 方法能使用分隔符分割字符串name_list_2 = name.split()print(name_list_2)

输出是:

['A', 'd', 'a', 'm', ' ', 'i', 's', ' ', 'v', 'e', 'r', 'y', ' ', 'c', 'o', 'o', 'l']['Adam', 'is', 'very', 'cool']

有时您需要将列表合并成一个字符串,join方法非常有用:

# 用空格连接列表的元素,组成一个新的字符串print(' '.join(['Adam', 'is', 'very', 'cool']))

输出是:

'Adam is very cool'

2.5列表的别名

这是一个容易出错的点。在下面的代码中,两个变量完全相同。如果更改一个,另一个的值也会更改:

# alias是列表name的别名name = ['Adam', 'is', 'very', 'cool']alias = namealias.pop()print(name)

输出是:

['Adam', 'is', 'very']

因此,当你想使用两个独立的列表时,尽量使用单独的赋值语句或浅层拷贝:

name = ['Adam', 'is', 'very', 'cool']# 创建值一样的列表name_2 = ['Adam', 'is', 'very', 'cool']# 浅复制name_3 = name[:]

2.6列出参数

元组可以通过*运算符作为参数传入函数,列表也可以作为参数输出到函数。这时函数会得到一个对列表的引用,也就是说如果在函数中修改了列表,原来的列表也会被修改。例子如下:

#定义一个函数,删除列表的第一个元素def del_head(t): del t[0]name = ['Adam', 'is', 'very', 'cool']del_head(name)print(name)

输出是:

['is', 'very', 'cool']

参数t和变量名指向同一个列表,所以t变了,name也变了。这个知识点很重要。写函数的时候要非常注意操作会不会创建一个新的链表,或者对原有链表进行修改。

2.7映射和列表推导

如果想通过函数对列表进行操作,映射和列表派生是不错的选择。Python提供的内置函数map接收两个参数——映射函数和迭代对象,返回一个迭代对象。示例如下:

# 返回元素的平方def square(n): return n*ntest_list = [1,2,4,5]result = map(square, test_list)print(result)print(list(result))

输出是:

[1, 4, 16, 25]

上述操作也可以通过使用列表派生来完成:

test_list = [1,2,4,5]result = [i*i for i in test_list]print(result)

输出是:

[1, 4, 16, 25]

3摘要

以上知识基本总结了单子的常见操作,简单总结一下经验:

大部分列表方法都是修改参数并返回None,一定要注意选择合适的方法,确保变量的安全性。实现同一种操作有很多种办法,有时用错误的方法不会报错,但结果有可能不对,确保理解了个中差异后再选择合适的方法。谨慎使用列表的别名,其实不止列表,其他的数据类型也会有别名的机制。

希望这些知识点对你有帮助。我们用一个leetcode算法问题巩固一下列表知识。请在评论区留下你的答案!下一次,我们将谈论Dict。

标题:旋转阵列

给定一个数组,将数组中的元素向右移动k个位置,其中k为非负数。示例:

输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]
不容错过