列表的基本语法:
列表是一种有序的,每个顺序下可以存储一个值的数据类型。
表现为:[1,2,3,4,5],用中括号括起来,用逗号进行隔开的数据类型。
同样也可以使用索引进行取值和切片,并且可以赋值
不同于元组和字符串,列表是可变数据类型,所以可以直接对索引位置的数据进行赋值!
列表中的元素是可以重复的。但是集合set中的元素是不可以重复的。
python列表的索引、切片和运算:
索引:从零开始。
切片:
注意切片赋值,会将切片索引位置的值先去掉,然后在切片开始的位置开始添加值。相当于在切片中进行插入。列表元素数量会增加
例如:a = [1,2,3]
a[0:2]=[1,2,1,3,2,1,2]
a这时就变成了[1,2,1,3,2,1,2,3]
序列的加法和乘法
[1]+[2] == [1,2]
[1] * 5 == [1,1,1,1,1]
成员资格检验
元素名 in 列表名 返回一个布尔值,表示这个元素是否存在于这个列表中。
列表内置方法
lst.append() #对列表《就地》的在末尾添加一个元素!注意,该方法并不返回任何的值!
lst.insert(index,value) #在对应的索引位置插入一个值。《就地》
lst.extend(lst2) #将列表2添加到列表1的后面。返回的结果《就地》修改lst的值,不需要储存!
lst.pop(index) #按照索引去删除一个列表元素,并将这个元素返回。《就地》如果不指定index,那么就任意删除
最后一个值。
lst.remove(value) #按照元素的值去删除一个元素。《就地》。注意,如果有两个以上同样的值,那么remove会删除
从左到右子一个对象。
lst.clear() #清空该列表的所有元素。
del lst #直接将该列表在内容中删除,包含列表内的全部元素。如果指定切片,就可以删除这部分的列表
元素
len(lst) #顾名思义
count(lst) #顾名思义
lst.index(value) #找到列表中某个值的键!用值查找索引!可以使用切片设置范围。只能查找从右开始第一个值
lst.copy() #创建一个lst列表的副本。注意将这个副本保存在一个变量中,才能继续使用。
这里执行的是潜复制。即其中元素的id还是不变,只有列表副本本身的id发生了变化。
lst.sort() #对列表进行正序排序,可以更改参数reverse=True进行倒序排序
lst.reverse() #翻转排序,按照原有顺序进行完全的翻转进行的排序
列表的本质
我们在赋值一个列表给变量的时候,实际上在赋值一个内存地址给变量。
需要注意的时候,如果我们赋值的不是一个空的列表的话,其中的元素还会单独生成各自的id
当我们把这个列表重新赋值给新的变量的时候,我们只是把这个id地址给了另一个变量。
所以我们改变其中一个变量中列表的内容的时候,另一个变量也会同步变动。
事实上,我们只是改变了其中元素的id,但是没有改变这个列表的id
.copy()可以产生一个新的列表id,如果我们赋值的是这个副本的话,他们就不再是一个列表了。
需要注意,即使使用.copy(),也只是产生了列表的副本,而其中的元素id还是和以前的id一样。
如果想让列表中的元素也独立变动,就需要用到import copy中的copy.deepcopy。