Appearance
列表
1. 列表的定义
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车:
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles) # ['trek', 'cannondale', 'redline', 'specialized']如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号:
2. 查看|修改
2.1. 查看
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
例如,下面的代码从列表bicycles中提取第一款自行车:
python
print(bicycles[0]) # trek
print(bicycles[-1]) # specialized- 索引从0而不是1开始
- 访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1, 可以访问最后一个元素。索引-2返回倒数第二个列表元素
2.2. 修改
要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles[0] = 'ducati'
print(bicycles) # ['ducati', 'cannondale', 'redline', 'specialized']3. 添加
3.1. 在列表末尾添加元素
使用方法append()可在列表末尾添加新元素。append()将元素添加到列表末尾,而不影响列表中的其他所有元素。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.append('ducati')
print(bicycles) # ['trek', 'cannondale', 'redline', 'specialized', 'ducati']3.2. 在列表中插入元素
使用方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.insert(0, 'ducati')
print(bicycles) # ['ducati', 'trek', 'cannondale', 'redline', 'specialized']insert
[ ɪnˈsɜːrt ]
vt.插入;嵌入
4. 删除
4.1. 使用del语句删除元素
如果知道要删除的元素在列表中的位置,可使用del语句
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
del bicycles[0]
print(bicycles) # ['cannondale', 'redline', 'specialized']4.2. 使用方法pop()弹出元素
方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
popped_bicycle = bicycles.pop()
print(bicycles) # ['trek', 'cannondale', 'redline']
print(popped_bicycle) # specializedpop
[ pɑːp ]
vt.弹出;删除
4.3. 弹出列表中任何位置处的元素
实际上,你可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
first_bicycle = bicycles.pop(0)
print(bicycles) # ['cannondale', 'redline', 'specialized']
print(first_bicycle) # trek4.4. 根据值删除元素
如果知道要删除的元素的值,可使用方法remove()。
python
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.remove('specialized')
print(bicycles) # ['trek', 'cannondale', 'redline']5. 排序
5.1. 永久性排序方法sort()
Python方法sort()可对列表进行永久性排序。
- 默认按字幕顺序排序
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars) # ['audi', 'bmw', 'subaru', 'toyota']reverse=True按字母顺序相反的顺序排序
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars) # ['toyota', 'subaru', 'bmw', 'audi']5.2. 临时排序函数sorted()
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars)) # ['audi', 'bmw', 'subaru', 'toyota']
print(cars) # ['bmw', 'audi', 'toyota', 'subaru']5.3. 倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse()。reverse()不是按字母顺序相反的顺序排列列表元素,而只是反转列表的排列顺序。
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars) # ['subaru', 'toyota', 'audi', 'bmw']reverse
[ rɪˈvɜːrs ]
vt.反转;倒置
5.4. 确定列表的长度
使用函数len()可快速获悉列表的长度。
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars)) # 46. 遍历
列表最重要的方法,就是遍历
用for循环遍历列表
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
for car in cars:
print(car)
# 输出:
# bmw
# audi
# toyota
# subaru6.1 缩进
和javascript 用打大括号表示代码块不通,python 用缩进表示代码块。
未缩进的代码会报错
python
cars = ['bmw', 'audi', 'toyota', 'subaru']
for car in cars:
print(car)如果你不小心缩进了无需缩进的代码行,Python将指出这一点:
python
message = "Hello Python world!"
print(message) ❶报错
python
File "hello_world.py",line 2
print(message)
^
IndentationError:unexpected indent为避免意外缩进错误,请只缩进需要缩进的代码, 只有要在for循环中对每个元素执行的代码行才需要缩进。
7. range() 数字遍历
range
[ ræŋg ]
n.范围;范围值;
Python函数range()让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数range()来打印一系列的数字:
函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。
python
for number in range(1,6):
print(number)输出:
1
2
3
4
5使用range()创建数字列表
python
numbers = list(range(1,6))
print(numbers) # [1, 2, 3, 4, 5]使用函数range()时,还可指定步长。例如,下面的代码打印1~10内的偶数
python
even_numbers = list(range(2,11,2))
print(even_numbers) # [2, 4, 6, 8, 10]8. 数字数组统计
- min() 最小值
- max() 最大值
- sum() 总和
python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(numbers)) # 0
print(max(numbers)) # 9
print(sum(numbers)) # 459. 列表解析
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
python
squares = [value**2 for value in range(1,11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]10. 切片
切片是指从列表中提取一部分元素。不改变原列表。
python
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) # ['charles', 'martina', 'michael']
print(players) # ['charles', 'martina', 'michael', 'florence', 'eli']players
[ plærs ]
n. (商业或政治方面的)参与者,竞争者,玩家;
如果你没有指定第一个索引,Python将自动从列表开头开始:0
如果你没有指定第2个索引,Python将自动列表结束
10.1 遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片。
python
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[0:3]
print(player.title())11. 复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
python
players = ['charles', 'martina', 'michael', 'florence', 'eli']
players_copy = players[:]
print(players) # ['charles', 'martina', 'michael', 'florence', 'eli']
print(players_copy) # ['charles', 'martina', 'michael', 'florence', 'eli']这种复制方法非常方便,因为它让你能够在不影响原始列表的情况下修改副本。
python
players_copy.append('张三')
print(players_copy) # ['charles', 'martina', 'michael', 'florence', 'eli', '张三']
print(players) # ['charles', 'martina', 'michael', 'florence', 'eli']不能用players_copy = players复制列表,这将导致两个变量都指向同一个列表。
python
players = ['charles', 'martina', 'michael', 'florence', 'eli']
players_copy = players
players_copy.append('张三')
print(players_copy) # ['charles', 'martina', 'michael', 'florence', 'eli', '张三']
print(players) # ['charles', 'martina', 'michael', 'florence', 'eli', '张三']12. 元组
元组是一种不可变的列表,即你不能修改元组的元素。元组使用圆括号而不是方括号来标识。
如:
python
dimensions = (200, 50)
print(dimensions) # (200, 50)
# 可查看
print(dimensions[0]) # 200
# 可遍历
for dimension in dimensions:
print(dimension)12.1 修改元组
虽然不能修改元组的元素,但可以给存储元组的变量赋值
python
dimensions = (200, 50)
print(dimensions) # (200, 50)
# 修改
dimensions = (400, 100)
print(dimensions) # (400, 100)