2. 列表
不同于元组和字符串,列表的内容是可变的(mutable)。
2.1 更新列表
2.1.1 元素赋值
①简单赋值(同R)
>>> group=[0,1,2,3,4]
#索引下标为1的元素重新赋值为9
>>> group[1]=9
>>> group
[0, 9, 2, 3, 4]
#索引下标为3的元素重新赋值为30
>>> group[3]=30
>>> group
[0, 9, 2, 30, 4]
②报错情况(R可以)
不能为一个不存在元素的位置赋值,若强行赋值,程序会报错。
>>> group
[0, 9, 'xiaomeng', 30, 4]
>>> group[5]='try'
Traceback (most recent call last):
File "<pyshell#134>", line 1, in <module>
group[5]='try'
IndexError: list assignment index out of range
2.1.2 增加元素
①语法格式
list代表列表,obj代表需要添加到list列表末尾的对象
list.append(obj)
②演示
>>> group
[0, 9, 'xiaomeng', 30, 4]
>>> group.append('try')
>>> group
[0, 9, 'xiaomeng', 30, 4, 'try']
append()方法操作列表时,返回的列表不是一个新列表,而是直接在原来的列表上做修改,然后将修改过的列表直接返回。
2.1.3 删除元素(R向量中删除使用负数索引)
>>> group
[0, 9, 'xiaomeng', 30, 4, 'try', 'test']
#使用序列中获取长度的函数
>>> len(group)
7
#删除最后一个元素,注意索引下标与序列长度的关系
>>> del group[2:6]
#查看删除元素后的列表
>>> group
[0, 9, 'test']
>>> len(group)
3
2.1.4 分片赋值
①字符串转化为列表
list()方法可以直接将字符串转换为列表。
list(str) 或
a=list(str)
②演示1 列表转化
>>> list('北京将举办2020年的冬奥会')
['北', '京', '将', '举', '办', '2', '0', '2', '0', '年', '的', '冬', '奥', '会']
>>> greeting=list('welcome to beijing')
>>> greeting
['w', 'e', 'l', 'c', 'o', 'm', 'e', ' ', 't', 'o', ' ', 'b', 'e', 'i', 'j', 'i', 'n', 'g']
演示② 分片赋值1(同R)
可以通过分片赋值直接对列表进行变更
>>> greeting[11:18]
['b', 'e', 'i', 'j', 'i', 'n', 'g']
>>> greeting[11:18]=list('china')
>>> greeting
['w', 'e', 'l', 'c', 'o', 'm', 'e', ' ', 't', 'o', ' ', 'c', 'h', 'i', 'n', 'a']
演示③ 分片赋值2
可以使用与原列表不等长的列表将分片进行替换
>>> greeting=list('hi')
>>> greeting
['h', 'i']
>>> greeting[1:]=list('ello')
>>> greeting
['h', 'e', 'l', 'l', 'o']
演示③ 分片插入(与R不同,R中此操作为替换)
>>> group=[0, 9, 'xiaomeng', 30, 4, 'try', 'test']
>>> group[5:5]=[666,777]
>>> group
[0, 9, 'xiaomeng', 30, 4, 666, 777, 'try', 'test']
演示④ 分片删除(R删除用负值索引)
>>> group
[0, 9, 'xiaomeng', 30, 4, 777, 'try', 'test']
>>> group[1:8]=[]
>>> group
[0]
2.1.5 嵌套列表
>>> test=[[1,2],[3,4],[5,6]]
>>> test1=test[1]
>>> test1
[3, 4]
>>> test1[1]
4
2.1.6 列表方法
①append()
该方法的功能是在列表的末尾添加新对象。
>>> test=[1,2,3,4,5,6]
>>> test.append(7)
>>> test
[1, 2, 3, 4, 5, 6, 7]
②extend()
extend()方法用于在列表末尾一次性追加另一个列表中的多个值(用新列表扩展原来的列表),也就是列表的扩展。
#extend()
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
#相加
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
extend()方法和序列相加的主要区别是:extend()方法修改了被扩展的列表,如这里的a,执行a.extend(b)后,a的值变更了;相加则不会改变初始a,b的值。
③index()
index()方法用于从列表中搜索某个值,返回列表中找到的第一个与给定参数匹配的元素的索引下标位置。
>>> a=[1,2,3,"hi","hi"]
>>> a.index("hi")
3
④insert()
insert()方法用于将对象插入列表。
>>> a=[1,2,3,4,5,6]
>>> a.insert(2,"hi")
>>> a
[1, 2, 'hi', 3, 4, 5, 6]
⑤sorted()
该函数可以直接获取列表的副本进行排序
#数字
>>> a=[9,2,3,4,1,4,2]
>>> b=sorted(a)
>>> b
[1, 2, 2, 3, 4, 4, 9]
>>> a
[9, 2, 3, 4, 1, 4, 2]
#字符串
>>> sorted("python")
['h', 'n', 'o', 'p', 't', 'y']
⑥copy()
copy()方法用于复制列表,不需要传入参数
>>> num=["a","b","c"]
>>> copy=num.copy()
>>> copy
['a', 'b', 'c']
⑦remove()
remove()方法用于移除列表中某个值的第一个匹配项。
>>> test=["a","b","c","a"]
>>> test.remove("a")
>>> test
['b', 'c', 'a']
⑧pop()
pop()方法用于移除列表中的一个元素,并且返回该元素的值;在使用pop()方法时,若没有指定需要移除的元素,则默认移除列表中的最后一个元素。
>>> test=["a","b",1,2,3,"c"]
>>> test.pop()
'c'
>>> test
['a', 'b', 1, 2, 3]
>>> test.pop(3)
2
>>> test
['a', 'b', 1, 3]
⑨reverse()
reverse()方法用于反向列表中的元素,该方法不需要传入参数。
>>> test=[9,2,1,3]
>>> test.reverse()
>>> test
[3, 1, 2, 9]
⑩count()
count()方法用于统计某个元素在列表中出现的次数。
>>> test1
['a', 'b', 'b', 'c', 'c', 'c']
>>> test1.count("b")
2
>>> test1.count("c")
3
⑪sort()
#默认按照首字母排序
>>> test=["cat","tree","a","fly111"]
>>> test.sort()
>>> test
['a', 'cat', 'fly111', 'tree']
#key指定按照长度排序;reverse反向排序
>>> test.sort(key=len)
>>> test
['a', 'cat', 'tree', 'fly111']
>>> test.sort(key=len,reverse=True)
>>> test
['fly111', 'tree', 'cat', 'a']
网友评论