Python之列表使用详解

1、列表类型的概念

列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。列表的长度和内容都是可变的,可自由对列表中的数据进行添加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。

由于列表属于序列类型,所以列表也支持成员关系操作符(in)、长度计算函数(len())、分片([ ])。列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(<、 >、 <=、 >=、 ==、 !=)进行比较,列表的比较实际上是单个数据项的逐个比较。列表用([ ])表示,也可以通过list()函数将元组或字符转化成列表。

>>> ls=[111,"zk",[11,"zk"],22]
>>> ls
[111, 'zk', [11, 'zk'], 22]
>>> ls[2][-1][0]
'z'
>>> list((111,"zk",[11,"zk"],22))
[111, 'zk', [11, 'zk'], 22]
>>> list("中国")
['中', '国']
>>> list()
[]

与整数和字符串不同,列表要处理一组数据,因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象。

>>> ls=[111,"zk",222] #用数据赋值产生列表ls
>>> lt=ls             #lt是ls所对应数据的引用,lt并不包含真实数据
>>> ls[0]=0
>>> lt
[0, 'zk', 222]

由上例所示,将ls赋值给列表lt仅能产生对列表ls的一个新的引用,真实的数据只会存一份,因此,修改ls的同时也修改了lt。

2、列表类型的操作
  • ls[i]=x
    替换列表ls第i数据项为x
>>> ls=[111,222,333]
>>> ls[2]="zzz"
>>> ls
[111, 222, 'zzz']
  • ls[i:j]=lt
    用列表lt替换列表ls中第i到第j项数据(不含第j项,下同)
>>> lt=[888]
>>> ls[1:2]=lt
>>> ls
[111, 888, 'zzz']
  • ls[i:j:k]=lt
    用列表lt替换列表ls中第i到第j项以k为步数的数据
>>> ls[0:2:2]=lt
>>> ls
[888, 888, 'zzz']
  • del ls[i:j]
    删除列表ls第i到第j项数据,等价于ls[i:j]=[]
>>> del ls[2:]
>>> ls
[888, 888]
  • del ls[i:j:k]
    删除列表ls第i到第j项以k为步数的数据
>>> ls=[111,222,333,444,555]
>>> del ls[0:4:2]
>>> ls
[222, 444, 555]
  • ls+=lt或ls.extend(lt)
    将列表lt元素增加到列表ls中
>>> ls=[111,222,333,444,555]
>>> lt=[888]
>>> ls+=lt
>>> ls
[111, 222, 333, 444, 555, 888]
>>> ls.extend(lt)
>>> ls
[111, 222, 333, 444, 555, 888, 888]
  • ls*=n
    更新列表ls,其元素重复n次
>>> ls=[111,222,333,444,555]
>>> ls*=2
>>> ls
[111, 222, 333, 444, 555, 111, 222, 333, 444, 555]
  • ls.append(x)
    在列表ls最后增加一个元素x
>>> ls=[111,222,333,444,555]
>>> ls.append(666)
>>> ls
[111, 222, 333, 444, 555, 666]
  • ls.clear()
    删除ls中所有的元素
>>> ls=[111,222,333,444,555]
>>> ls.clear()
>>> ls
[]
  • ls.copy()
    生成一个新列表,复制ls中的所有元素
>>> ls=[111,222,333,444,555]
>>> ls.copy()
[111, 222, 333, 444, 555]
  • ls.insert(i,x)
    在列表ls的第i位置增加元素x
>>> ls=[111,222,333,444,555]
>>> ls.insert(1,999)
>>> ls
[111, 999, 222, 333, 444, 555]
  • ls.pop(i)
    将列表ls中的第i项取出并删除
>>> ls
[111, 999, 222, 333, 444, 555]
>>> ls.pop(1)
999
>>> ls
[111, 222, 333, 444, 555]
  • ls.remove(x)
    将列表中出现的第一个元素x删除
>>> ls
[111, 222, 333, 444, 555]
>>> ls.remove(222)
>>> ls
[111, 333, 444, 555]
  • ls.reverse()
    列表ls中的元素反转
>>> ls
[111, 333, 444, 555]
>>> ls.reverse()
>>> ls
[555, 444, 333, 111]
  • sort(self, key, reverse)
    将list中所有的元素进行排序。其中,reverse如果为True则以逆顺进行排序,默认为False,则为正顺排序。
>>> test = [3, 1, 999, 3, 5, 234]
>>> test.sort()
>>> test
[1, 3, 3, 5, 234, 999]  #输出结果
 
>>> test.sort(reverse = True)  #逆顺排序
>>> test
[999, 234, 5, 3, 3, 1]  #输出结果
 
>>> test = [3, 2, 1, 'd', 'n', 'e', 't', 'x', 'e', 'python']
>>> test.sort()  #字符串和数字不能混合排序
Traceback (most recent call last):
  File "<pyshell#61>", line 1, in <module>
    test.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
 
>>> test = ["python", 'insert']
>>> test.sort()  #对字符串进行排序
>>> test
['insert', 'python']  #输出结果

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值