列表是 Python 中重要的数据结构,一般用来存储多个项在一个变量中,列表中有和字符串一样的索引结构,从左零开始,从右负一开始。
可以使用 列表变量[索引] 的形式 来取出列表中的元素。
list = ['google', 'facebook', 'twitter', 'yahoo', 'apple']
print('The second item:', list[2])
也可以使用反向索引
list = ['google', 'facebook', 'twitter', 'yahoo', 'apple']
print(list[-3])
最后输出的结果是一样的。同样的,标签也支持 [开始:结束] 形式进行截取,比如变量
list = ['google', 'facebook', 'twitter', 'yahoo', 'apple', 'microsoft', 'oracle']
/ | yahoo | apple | microsoft | oracle | |||
---|---|---|---|---|---|---|---|
从前面索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
从后面索引 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
举个例子
print(list[2:5])
['twitter', 'yahoo', 'apple']
小贴士:输出索引从 2 开始,到索引 5 ,但是不包括 5 。
列表中可以支持多种数据种类,整型、字符串、浮点、布尔都可以存在同一个列表中。
multiple2 = ['apple', 34, True, 4.88]
使用 type() 函数可以判断类型
multiple2 = ['apple', 34, True, 4.88]
print(type(multiple2))
# 输出
<class 'list'>
修改列表
列表的大小和内容可以随意改变,在插入、删除、修改列表元素时,不会创建新的克隆变量,而是在原来的内存地址上直接修改(就地修改)。
增
增加元素的三种方式
使用 append()
方法
L1 = [1, 2, 3, 4]
L1.append(5)
print(L1)
# 输出
[1, 2, 3, 4, 5]
使用 insert()
方法
L2 = [1, 2, 3, 4]
L2.insert(1, 10) #(索引, 插入的值)
print(L2)
# 输出
[1, 10, 2, 3, 4]
使用 extend()
方法
L3 = [1, 2, 3, 4]
L3.extend([11, 22, 33])
print(L3)
# 输出
[1, 2, 3, 4, 11, 22, 33]
小贴士:三种方式的不同在于 append 方法在末尾插入;insert 方法可以在任意位置插入,如果手动指定的索引大于索引的总长度则默认添加到末尾;extend 方法则可以在尾部一次加入多个元素。
注意上述提到的“就地修改”问题,这个很重要,方法会直接修改变量对应的内存地址,而不会创建新的变量进行赋值。
L4 = [1, 2, 3, 4, 5]
L4 = L4.insert(6, 2)
print(L4[2])
执行上述代码即可看到报错
Traceback (most recent call last):
File "/Users/kane/PycharmProjects/LearnPython/main.py", line 159, in <module>
print(L[2])
TypeError: 'NoneType' object is not subscriptable
这是因为 insert 方法不会返回修改后的变量,而是返回 none ,所以在再次赋值时 L4 变量会被刷新为 none ,所以打印时会收到报错,其他几个 append() extend() 也同理。
删
删除也有多种方法,比较常用的是 remove()
方法
L5 = ['aa', 'bb', 'cc']
L5.remove('aa')
print(L5)
# 输出
['bb', 'cc']
另外一个方法是 pop()
方法,可以删除最后一个元素,并将元素作为方法返回值返回。
L6 = [1, 2, 3, 4, 5]
print(L6)
print(L6.pop())
print(L6)
# 输出
[1, 2, 3, 4, 5]
5
[1, 2, 3, 4]
还有一个内置方法 del
可以用来删除列表中的指定片段
L7 = ['aa', 'bb', 'cc']
del L7[1:3]
print(L7)
# 输出
['aa']
分片赋值
分片输出还可以同时进行赋值
L8 = [1, 2, 3, 4, 5, 6]
L8[1:3] = ['aa', 'bb', 'cc']
print(L8)
# 输出
[1, 'aa', 'bb', 'cc', 4, 5, 6]
小贴士:分片赋值是在原列表上删除指定的段,然后在删除的位置插入新的列表,因此列表左右两边的长度可以不等。
本地排序
使用 sort()
方法可以进行正向排序,reverse()
方法可以进行反向排序,但是只能对数字进行排序,如果元素包含字符串,会抛出报错。
L9 = [1, 5, 3, 7, 4, 2, 6]
print(L9)
L9.sort()
print(L9)
L9.reverse()
print(L9)
# 输出
[1, 5, 3, 7, 4, 2, 6]
[1, 2, 3, 4, 5, 6, 7]
[7, 6, 5, 4, 3, 2, 1]
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2021-04-09 17:21 PM