Python 序列之列表的独有的基本操作

来源:互联网 发布:泸州古蔺网络问政平台 编辑:程序博客网 时间:2024/06/05 12:24

列表是最常用的Python数据类型,它以作为一个方括号内的逗号分隔值出现。列表不同于元组(另有篇幅单独介绍元组)和字符串的最大不同就是列表是可变的,起元素是可修改的。列表举例:a=['a',1,['b']],b=[[['a','b'],'c'],1,''abc]

列表独有的基本操作有:元素赋值、删除元素和分片赋值。(备注:该操作是直接改变了原有列表的内容的)

1.元素赋值,直接改变列表中某个元素的值。

>>> x=[1,2,'a']>>> x[0]=['a']   #对第一个元素赋值>>> x[['a'], 2, 'a']>>> x[-1]='b'    #对最后一个元素赋值>>> x[['a'], 2, 'b']>>> x[10]='d'    #不能对不存在的元素赋值Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: list assignment index out of range
2.删除元素,用del语句实现
>>> x          #列表x的元素值有3个,长度也为3[['a'], 2, 'b']>>> len(x)    3>>> del  x[1]  #删除列表x的第二个元素>>> x[['a'], 'b']>>> len(x)     #删除第二个元素后,长度也跟着变化了2>>> del x[10]  #不能删除不存在的原始Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: list assignment index out of range>>> >>>x=['a', 2, 'a', 4, 'a', 8, 'a', 7, 'a', 6, 'a', 5]>>> del x[1:8:2]   #对于列表第二个元素到第八个元素(两头包含),每隔一个元素删除一个>>> x['a', 'a', 'a', 'a', 'a', 6, 'a', 5]
3.分片赋值,分片赋值这个功能比较强大,可以实现增、删、改的所有功能。

分片赋值可以一次为多个元素赋值

>>> x=[1,2,3,4]>>> x[2:]=[5,6]>>> x[1, 2, 5, 6]
分片赋值可使用不等长的分片替换原有分片,当右边长度大于左边时,多余的元素会采取插入新值的方式;当右边长度小于左边长度时,原列表后面的元素都会被删除;当两边长度相等时,采用的是原位替换

>>> x=[1,2,3,4]>>> y=[5,6,7,8]>>> x[2:]=y[1:]   #左边2个元素,右边3个元素,多余的最后1个元素插入到了列表x的最后>>> x[1, 2, 6, 7, 8]>>> z=['a','b','c']>>> x[0:1]=z      #左边1个元素,右边3个元素,多余的2个元素按顺序插入到了列表x[0]的后面>>> x['a', 'b', 'c', 2, 6, 7, 8]>>> x[-4:]=z      #左边4个元素,右边3个元素,原列表x[-2]之后元素被删除>>> x ['a', 'b', 'c', 'a', 'b', 'c']>>> x[1:]=z[0:1]  #左边5个元素,右边1个元素,原列表x[1]之后元素被删除>>> x['a', 'a']>>> x=[1,2,3,4]>>> x[1:3]=[5,6]  #两边元素个数相等,按顺序原位替换元素值>>> x[1, 5, 6, 4]
按照上述方法继续延伸,可以在列表的任意位置插入任意个元素,只需要让左边元素个数为0即可

>>> x=[1,2,3,4]>>> x[1:1]=[5,5,5]    #在列表第一个之前插入了3个元素>>> x[1, 5, 5, 5, 2, 3, 4]>>> x[-2:0]=[6,6,6]   #在列表倒数第二个之前插入了3个元素>>> x[1, 5, 5, 5, 2, 6, 6, 6, 3, 4]
按照上述方法继续延伸,可以删除列表中任意位置的元素

>>> x=[1,2,2,3,4,5,6,7,8,9]>>> x[1:2]=[]       #删除某一个元素>>> x[1, 2, 3, 4, 5, 6, 7, 8, 9]>>> x[1:5]=[]       #删除某一个分片的元素>>> x[1, 6, 7, 8, 9]>>> x[1:5:2]=[]     #使用步长不为1时,左右两边的长度必须相同,否则报错Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: attempt to assign sequence of size 0 to extended slice of size 2
  用步长不为1来操作列表

>>> x=[1,2,3,4]*3>>> x[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]>>> x[::2]='a'*(len(x)/2)       #把列表x的奇数位元素设置为字符'a'>>> x['a', 2, 'a', 4, 'a', 2, 'a', 4, 'a', 2, 'a', 4]>>> x[-1:-8:-2]=[5,6,7,8]          #按倒序把列表倒数第一位和第七位之间的4个奇数位设置为数字5,6,7,8  (注意赋值顺序)>>> x['a', 2, 'a', 4, 'a', 8, 'a', 7, 'a', 6, 'a', 5]

原创粉丝点击