最普通的创建列表
>>> my_l = [1, 2, 3, 'a', 'b', 'c'] >>> my_l [1, 2, 3, 'a', 'b', 'c']
使用list()
将其他序列转换为列表
>>> s = 'hello' >>> a = list(s) >>> a ['h', 'e', 'l', 'l', 'o']
使用列表生成式创建列表
>>> my_l = [i for i in range(10)] # 生成一个[0, 10)的列表 >>> my_l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> my_l = [i for i in range(10) if i % 2 == 0] # 生成一个[0, 10)间的偶数列表 >>> my_l [0, 2, 4, 6, 8] >>> my_l = [i if i % 2 ==0 else -1 for i in range(10)] # 生成一个[0, 10)的列表,其中偶数保持原样,奇数变为-1 >>> my_l [0, -1, 2, -1, 4, -1, 6, -1, 8, -1]
内容参考豌豆花下猫的文章
[i:i+n:m]
,i
为起始索引值,i+n
为终止索引值,m
为间隔,从索引i
起,以m
为间隔,截取到索引i+n
前(不包括索引i+n
的元素)的元素;i
、i+n
、m
,都可以省略,不写i
时默认从序列最左边开始,不写i+n
时默认为序列末尾,不写m
时默认为1。三者都可以为负,当索引为-1即为序列倒数第一个元素,以此类推。m
为负数时,将列表翻转,但翻转后的元素索引仍按照翻转前来使用,m
不可以为0,会报错;i
到i+n
的元素不为从左往右,则截取不到元素。# 表示整个列表 li[:] == li[::] == li[:9] == li[0:9] == li[-9:] >>> li[:] [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> li[2:8] [3, 4, 5, 6, 7, 8] >>> li[2:8:2] [3, 5, 7] >>> li[-1:] [9] >>> li[-8:-3] [2, 3, 4, 5, 6] >>> li[-8:-3:2] [2, 4, 6] >>> li[:-5] [1, 2, 3, 4] >>> li[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1] # 当m间隔为-1时,可以理解为先将列表翻转(即为负号的作用),然后再按照翻转前的索引和间隔的绝对值去进行切片截取 >>> li[-2:-8:-1] # 例如[-2:-8:-1],即为将列表翻转后,从第-2个元素(8),截取到第-8个元素(2) [8, 7, 6, 5, 4, 3] >>> li[2:5:-1] # 若使用此写法,即为从索引为2的元素(3),间隔为1的截取到索引为5的元素(6),在翻转后的列表看来是从右往左,因此截取不到元素 [] >>> li[:-5:-1] # 列表翻转后,从最左端截取到索引为-5的元素 [9, 8, 7, 6] >>> li[:-5:-3] # 列表翻转后,间隔为3的从最左端截取到索引为-5的元素 [9, 6]
>>> li_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> li_2 = li_1[:] >>> li_1 == li_2 True >>> li_1 is li_2 # li_2为返回的新序列,与li_1的id内存地址并不相同 False >>> li_2[2] = 'a' >>> li_2 [1, 2, 'a', 4, 5, 6, 7, 8, 9] >>> li_1 [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> li_3 = [1, 2, 3, 4, 5, [9, 8, 7]] >>> li_4 = li_3[:] >>> li_4[5][1:] = ['a', 'b'] # 此处的 li_4[5]为拷贝出的 li_3[5]的引用,为同一个对象,因此修改后li_3也会对应变化 >>> li_4 [1, 2, 3, 4, 5, [9, 'a', 'b']] >>> li_3 [1, 2, 3, 4, 5, [9, 'a', 'b']] >>> li_4[5] = 3 # 若为此中方式,事实上修改的为 li_4中,索引为5的元素的引用,将索引为5的元素指向了3,因此li_3不会变化 >>> li_4 [1, 2, 3, 4, 5, 3] >>> li_3 [1, 2, 3, 4, 5, [9, 'a', 'b']]
append()
方法,在列表末尾增加元素;>>> l = [1, 2, 3, 4] >>> l.append(5) >>> l.append('hello') >>> l [1, 2, 3, 4, 5, 'hello']
extend()
方法,在列表后拼接另一个序列(列表、元组、字符串、字典(参数为字典时是拼接的key));>>> l = [1, 2, 3, 4] >>> l.extend([5, 6]) >>> l [1, 2, 3, 4, 5, 6] >>> l.extend('hello') >>> l [1, 2, 3, 4, 5, 6, 'h', 'e', 'l', 'l', 'o']
+
操作符拼接另一个列表(只能为列表);>>> l = [1, 2, 3] >>> l1 = ['a', 'b'] >>> l+l1 [1, 2, 3, 'a', 'b']
*
操作符重复列表。>>> l = [8, 8, 6] >>> l*3 [8, 8, 6, 8, 8, 6, 8, 8, 6]
>>> li = ['a', 'b', 'c', 'd', 'e', 'f'] >>> del li[1] >>> li ['a', 'c', 'd', 'e', 'f']
>>> li.remove('e') >>> li ['a', 'c', 'd', 'f']
>>> li.pop() # 会返回删除的那个元素 'f' >>> li ['a', 'c', 'd']
>>> li.pop(1) 'c'
>>> li.clear() >>> li []
>>> del li >>> li Traceback (most recent call last): File "<input>", line 1, in <module> NameError: name 'li' is not defined
列表中元素的查找和修改,是使用列表切片和索引来进行操作,不再赘述
参考文档
豌豆花下猫:
https://www.yuque.com/wandouhuaxiamao/pythoncat/pmz02u
https://www.yuque.com/wandouhuaxiamao/pythoncat/re6zv3#af541e61