2 列表和元组(2)

目录

2.3 列表:python的“苦力”

2.3.1 list函数

2.3.2 基本的列表操作

(1)元素赋值

(2)删除元素

(3)分片赋值

下一小节接:2.3.3 列表方法


2.3 列表:python的“苦力”

 讨论列表与字符串不同的地方:列表是可变的

2.3.1 list函数

因为字符串不能像列表一样被更改,所以有时根据字符串创建列表会很有用

>>> list("Hello")
['H', 'e', 'l', 'l', 'o']

Ps:list函数是用于所有类型的序列,而不只是字符串

提前了解:转换回去:>>> ''.join(['H', 'e', 'l', 'l', 'o'])

>>> ''.join(['H', 'e', 'l', 'l', 'o'])
'Hello'

2.3.2 基本的列表操作

列表可以使用所有适用于序列的标准操作,例如索引、分片、连接和乘法。列表可以修改。改变列表的方法:元素赋值、元素删除、分片赋值以及列表方法。

(1)元素赋值

索引标记为某个特定的、位置明确的元素赋值

>>> x = [1,1,1]
>>> x[1]=2
>>> x
[1, 2, 1]

PS:不能为一个位置不存在的元素进行赋值;如果列表长度为2,就不能为索引为100的元素进行赋值。如果要那样做,就必须创建一个长度为101(或更长)的列表,具体参考“None、空列表和初始化

>>> l = [None]*100
>>> l
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
>>> l[100]=10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> l[99]=10
>>> l[99]
10

>>> l = [""]*100
>>> l
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']

看一下[]、[""]、[None]的区别

>>> print len([])   打印print []*100结果是[]
0
>>> print len([""])    type("")的结果显示<type 'str'>
1
>>> print len([None])    type(None)的结果显示<type 'NoneType'>
1

(2)删除元素

从列表中删除元素很容易:使用del语句来实现

>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

Cecil被删除。并且列表的长度由5变成了4,除了删除列表中的元素,del还能用于删除其他元素,可以用于字典元素(第四章)甚至是其他变量的删除操作(第五章)

(3)分片赋值

>>> name = list('Perl')   将找字符串转为列表,因为列表可以修改
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']

一次为多个元素赋值可与源序列不等长

>>> name = list('Perl')
>>> name[2:] = list('arsasa')
>>> name
['P', 'e', 'a', 'r', 's', 'a', 's', 'a']

也可不动元素直接插入新元素

>>> numbers = [1,5]
>>> numbers[1:1] = [2,3,4]     #numbers[1]=5
>>> numbers
[1, 2, 3, 4, 5]

这个程序只是替换了一个空的分片,因此实际的操作是插入了一个序列。一次类推,通过分片赋值来删除元素是可行的(采用一个空的分片来进行替换

>>> numbers = [1,2,3,4,5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]

>>> numbers = [1,5]
#Ps:执行>>> numbers[1:] = [2,3,4] 结果为[1, 2, 3, 4] 替换numbers[1]以及之后为[2,3,4]
#执行>>> numbers[1:1] = [2,3,4]结果为[1,2,3,4,5] 替换n[1]但不包括结尾n[1],也就是插入
#执行>>> numbers[0:1] = [2,3,4]结果为[2,3,4,5] 替换n[0]但不包括结尾n[1]
#执行>>> numbers[1:2] = [2,3,4]结果为[1,2,3,4] 替换n[1]但不包括结尾n[2],本来就没n[2]

这个也可以步长设置,不过目前不是特别明白,试了一下

>>> n = [1,3,5]
>>> n[0:3:2] = [2,4]
>>> n
[2, 3, 4]

对n[0:3]进行操作,每隔1个步长操作一次(2个操作一次),也就是n[0],n[1],n[2]中先操作n[0:3]的n[0](不包括n[3]);n[0]替换成2,再隔一个n[1]不操作,n[2]=4;

下一小节接:2.3.3 列表方法

列表方法较多,比较长,单独记录一篇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值