列表
Python
Python的列表(list) 对象是最常用的序列(Sequence)。与字符串是不可变序列不同,列表是可变的。可通过对偏移量进行修改和读取。
创建列表
创建列表的方式
- 使用
[]
,例如list1 = [2, 3, 4]
。 - 使用
list()
函数(也叫构造函数),例如list1 = list(2, 3, 4)
。 - 使用列表推导式,
[x for x in iterable if condition]
。
使用列表推导式创建列表的案例
>>> [i for i in range(20)]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[>>> [i for i in range(40) if i%2==0]
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
[>>> [i*2 for i in range(20)]
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
[>>> [i+j for i in range(5) for j in range(5)]
0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8]
[>>> [i+j for i in range(10) for j in range(10)]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 5, 6,
[7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> {i+j for i in range(10) for j in range(10)}
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
{>>> [(i,j,k) for i in 'abc' for j in range(2) for k in range(2)]
'a', 0, 0), ('a', 0, 1), ('a', 1, 0), ('a', 1, 1), ('b', 0, 0), ('b', 0, 1),
[('b', 1, 0), ('b', 1, 1), ('c', 0, 0), ('c', 0, 1), ('c', 1, 0), ('c', 1, 1)]
(>>> [chr(i) for i in range(97,123)]
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
['p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
>>> {i:ord(i) for i in [chr(i) for i in range(97,123)]}
'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101, 'f': 102, 'g': 103, 'h': 104,
{'i': 105, 'j': 106, 'k': 107, 'l': 108, 'm': 109, 'n': 110, 'o': 111, 'p': 112,
'q': 113, 'r': 114, 's': 115, 't': 116, 'u': 117, 'v': 118, 'w': 119, 'x': 120,
'y': 121, 'z': 122}
>>> dic={i:ord(i) for i in [chr(i) for i in range(97,123)]}
>>> dic['x']
120
遍历列表
遍历列表的方式
for item in list
for item in iter(list)
for index in range(len(list))
for index,value in enumerate(list)
使用for item in list
遍历列表
= ["Hello", 'everyone', 2022]
lis for item in lis:
print(F"Item = {item}")
"""
Item = Hello
Item = everyone
Item = 2022
"""
使用for index in range(len(list))
遍历列表
= ["Hello", 'everyone', 2022]
lis for index in range(len(lis)):
print(F"index = {index}, Item = {lis[index]}")
"""
index = 0, Item = Hello
index = 1, Item = everyone
index = 2, Item = 2022
"""
使用for index, value in enumerate(lis)
遍历列表
= ["Hello", 'everyone', 2022]
lis for index, value in enumerate(lis):
print("index =", index, "value =", value)
"""
index = 0 value = Hello
index = 1 value = everyone
index = 2 value = 2022
"""
使用for value in iter(lis)
遍历列表
= ["Hello", 'everyone', 2022]
lis for value in iter(lis):
print("value =", value)
"""
value = Hello
value = everyone
value = 2022
"""
增加列表元素
增加列表的方法有多种,常见的有insert
、append
、extend
、+
运算等等。
使用insert
方法在指定位置插入列表元素
= [1, 2, 3]
a 2, 2.5)
a.insert(print(a)
"""
[1, 2, 2.5, 3]
"""
insert
方法用于将对象插入到列表中,例如:运行结果为[1, 2, 2.5, 3]
,insert
方法的两个参数值很好理解,第一个参数为在哪个元素后插入,表示位置,第二个参数为插入的内容。
使用append
方法在列表尾部增加新元素
= [1, 2, 3]
code 4)
code.append(print(code)
"""
[1, 2, 3, 4]
"""
使用extend
方法在列表尾部增加多个值
= [1, 2, 3]
a = [4, 5, 6]
b
a.extend(b)print(a)
"""
[1, 2, 3, 4, 5, 6]
"""
一次性追加另一个序列中的多个值,以上代码将把b
列表追加到a
列表中,打印出的a
列表的值为[1, 2, 3, 4, 5, 6]。和序列加运算
不同,extend
方法将改变原有列表的内容,而加运算
却不会。
使用序列加运算
生成新的列表
= [4, 5, 6]
b = b + [7, 8, 9]
c print(b)
"""
[4, 5, 6]
"""
print(c)
"""
[4,5,6,7,8,9]
"""
使用分片赋值插入元素
= list('Python')
name 1:1] = list('--')
name[print(name)
"""
['P', '-', '-', 'y', 't', 'h', 'o', 'n']
"""
删除列表元素
使用del
语句删除列表元素
= [1, 2, 3, 4, 5]
list1 del list1[3:]
print(list1)
del list1[0]
print(list1)
"""
[1, 2, 3]
[2, 3]
"""
使用pop
方法删除列表指定元素
pop
方法会移除列表中的一个元素并且返回该元素的值。pop
方法默认删除为最后一个,和append
方法刚好相反。
= [1, 2, 3]
a print(a.pop())
print(a)
使用remove
方法查找并删除列表元素
= ['to', 'be', 'or', 'not', 'to', 'be']
code print(code.remove('or'))
print(code)
"""
None
['to', 'be', 'not', 'to', 'be']
"""
remove
方法并不返回匹配到的内容。
修改列表的值
可通过赋值语句与其他表达式的组合,修改列表的值。
修改单个元素的值
= [2, 2, 2]
a 1] = 1
a[print(a)
"""
[2, 1, 2]
"""
列表可通过索引对其对应的元素进行赋值,从而改变列表的内容。通过上述代码的运行,我们可以看到列表确实是可以改变的。
修改列表中多个元素的值
>>> name = list('Python')
>>> print(name)
'P', 'y', 't', 'h', 'o', 'n']
[>>> name[2:] = list('data')
>>> print(name)
'P', 'y', 'd', 'a', 't', 'a'] [
分片赋值可以一次为多个元素赋值,并且不用考虑原列表的长度是否和新的列表长度一致。
{{< include _列表常用内置方法.qmd >}}将列表当做堆栈使用
列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用append()
方法可以把一个元素添加到堆栈中。用不指定索引的pop()
方法可以把一个元素从堆栈顶释放出来。
例如:
= [3, 4, 5]
stack 6)
stack.append(7)
stack.append( stack
[3, 4, 5, 6, 7]
#后进先出 stack.pop()
7