|
|
Python 支持多种 复合 数据类型,可将不同值组合在一起。最常用的 列表 ,是用方括号标注,逗号分隔的一组值。列表 可以包含不同类型的元素,但一般情况下,各个元素的类型相同:
squares = [1, 4, 9, 16, 25]
squares
[1, 4, 9, 16, 25]
和字符串(及其他内置 sequence 类型)一样,列表也支持索引和切片:
squares[0] # 索引操作将返回条目
1
squares[-1]
25
squares[-3:] # 切片操作将返回一个新列表
[9, 16, 25]
列表还支持合并操作:
squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
与 immutable 字符串不同, 列表是 mutable 类型,其内容可以改变:
cubes = [1, 8, 27, 65, 125] # 这里有点问题
4 ** 3 # 4 的立方是 64,不是 65!
64
cubes[3] = 64 # 替换错误的值
cubes
[1, 8, 27, 64, 125]
你也可以通过使用 list.append() 方法,在列表末尾添加新条目(我们将在后文看到有关方法的更多介绍):
cubes.append(216) # 添加 6 的立方
cubes.append(7 ** 3) # 和 7 的立方
cubes
[1, 8, 27, 64, 125, 216, 343]
Python 中的简单赋值绝不会复制数据。 当你将一个列表赋值给一个变量时,该变量将引用 现有的列表。你通过一个变量对列表所做的任何更改都会被引用它的所有其他变量看到。:
rgb = ["Red", "Green", "Blue"]
rgba = rgb
id(rgb) == id(rgba) # 它们指向同一个对象
True
rgba.append("Alph")
rgb
["Red", "Green", "Blue", "Alph"]
切片操作返回包含请求元素的新列表。以下切片操作会返回列表的 浅拷贝:
correct_rgba = rgba[:]
correct_rgba[-1] = "Alpha"
correct_rgba
["Red", "Green", "Blue", "Alpha"]
rgba
["Red", "Green", "Blue", "Alph"]
为切片赋值可以改变列表大小,甚至清空整个列表:
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
# 替换一些值
letters[2:5] = ['C', 'D', 'E']
letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
# 现在移除它们
letters[2:5] = []
letters
['a', 'b', 'f', 'g']
# 通过用一个空列表替代所有元素来清空列表
letters[:] = []
letters
[]
内置函数 len() 也支持列表:
letters = ['a', 'b', 'c', 'd']
len(letters)
4
还可以嵌套列表(创建包含其他列表的列表),例如:
a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n]
x
[['a', 'b', 'c'], [1, 2, 3]]
x[0]
['a', 'b', 'c']
x[0][1]
'b' |
|