目录
第3章——列表简介
1. 列表定义
列表是一系列按特定顺序排列的元素组成,元素之间可以没有任何关系。
用[ ]方括号表示列表,用 , 逗号分隔元素。
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
1.1 访问列表元素
列表是有序集合,要访问列表的元素,需要将该元素的位置或索引告诉python。
列表名称[索引]
- 列表元素的索引是从0开始的
- 索引指定为-1,可以返回最后一个列表元素
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles[0])
trek
>>> print(bicycles[0].title())
Trek
>>> print(bicycles[-1])
specialized
2. 修改、添加和删除元素
2.1 修改列表元素
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki', 'ducati']
>>> motorcycles[0]="ducati"
>>> print(motorcycles)
['ducati', 'yamaha', 'suzuki', 'ducati']
2.2 添加元素
(1)在列表末尾添加元素 append()
#在列表末尾添加元素,用append()
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> motorcycles.append('ducati')
>>> motorcycles
['honda', 'yamaha', 'suzuki', 'ducati']
#通常是先新建空列表,之后将元素添加进去
>>> motorcycles=[]
>>> motorcycles.append('honda')
>>> motorcycles.append('yamaha')
>>> motorcycles.append('suzuki')
>>> motorcycles
['honda', 'yamaha', 'suzuki']
(2)在列表中插入元素 insert(位置,“插入元素值”)
>>> motorcycles
['honda', 'yamaha', 'suzuki']
>>> motorcycles.insert(0,"ducati")
>>> motorcycles
['ducati', 'honda', 'yamaha', 'suzuki']
2.3 删除元素
(1)使用del语句删除元素(已知元素的位置)del 列表名称[位置]
>>> motorcycles
['ducati', 'honda', 'yamaha', 'suzuki']
>>> del motorcycles[0]
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
(2)使用方法pop()删除元素
pop()可删除列表末尾的元素,并能让你接着使用这个被pop出来的元素;pop(索引)可以弹出任意位置的元素:
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> pop_motorcycles=motorcycles.pop()
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> print(pop_motorcycles)
ducati
#pop(索引)弹出任意位置的元素
>>> second_word=motorcycles.pop(1)
>>> print(second_word)
yamaha
(3)根据值删除元素 remove()
方法remove()只删除第一个符合条件的值,如果要删除的值在列表中多次出现,要用循环来删除。
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> motorcycles.remove('ducati')
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
#提前将要删除的值存在一个变量中,就可以在remove之后再次使用
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
>>> too_expensive = 'ducati'
>>> motorcycles.remove(too_expensive)
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> print("\nA " + too_expensive.title() + " is too expensive for me.")
A Ducati is too expensive for me.
3.组织列表
3.1 使用方法sort()对列表永久性排序,sorted()函数对列表临时排序(不会改变原列表)
#方法sort()永久性排序,如果想按字母逆序可以cars.sort(reverse=TRUE)
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'subaru', 'toyota']
#sorted()函数暂时性排序,如果想an字母逆序可以sorted(cars,reverse=TRUE)
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']
>>> print(sorted(cars))
['audi', 'bmw', 'subaru', 'toyota']
>>> print(sorted(cars, reverse=True))
['toyota', 'subaru', 'bmw', 'audi']
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']
3.2 方法reverse()倒着打印列表
- 注意:不是按字母逆序排列,只是反转列表元素的排序。
- 方法reverse()会永久性修改排列顺序,但可以再次调用reverse()恢复到原来的顺序。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> cars.reverse()
>>> print(cars)
['subaru', 'toyota', 'audi', 'bmw']
>>> cars.reverse()
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']
3.3 确定列表长度 len()函数
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4
第4章——操作列表
1. 遍历列表 for
注意:
- for后面的临时变量可以指定任何名称
- for语句结尾不要忘记冒号:
- for语句后面,每个缩进的代码行都是循环的一部分,且针对列表中的每个值都执行一次
pizza_type=["pineapple","durian","tomato"]
for pizza in pizza_type:
print("I like " + pizza + " pizza")
print("I really love pizza")
2. 创建数字列表
2.1 使用函数range()、list()创建数字列表
函数range()从指定的第一个值开始数,到达指定的第二个值停止,输出不包含第二个值,如range(1,5)只会输出1~4
#range从1~5,不包含6,差一行为
>>> numbers = list(range(1,6))
>>> print(numbers)
[1, 2, 3, 4, 5]
#range函数可以指定步长,打印出1~5内的奇数
>>> numbers = list(range(1,6,2)) #步长为2,从第一个值开始加2,直到到达或超出第二个值
>>> print(numbers)
[1, 3, 5]
两个星号(**)表示乘方运算,以下例子创建一个列表包含1~10的平方数:
>>> squares=[]
>>> for value in range(1,11):
... squares.append(value**2)
...
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2.2 列表解析
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
如上面创建一个列表包含1~10的平方数,可以写成:
>>> squares=[value**2 for value in range(1,11)]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 首先制定一个描述性的列表名,如squares;
- 然后制定一个方括号,定义一个表达式,用于生成你要存储到列表中的值,如表达式value**2;
- 编写一个for循环,用于给表达式提供值(注意:不需要添加冒号),再加上方括号。
3. 使用列表的部分元素(子集)——切片
3.1 切片
指定要使用的第一个元素的索引和最后一个元素的索引+1,和函数range()一样,到达第二个索引前面的元素就会停止。
例如:取前四个元素,索引为0~3,创建切片则为players[0:4]
>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> print(players[0:4])
['charles', 'martina', 'michael', 'florence']
#从第二个元素一直取到末尾
>>> print(players[1:])
['martina', 'michael', 'florence', 'eli']
#取前三个元素
>>> print(players[:3])
['charles', 'martina', 'michael']
#取最后三个元素
>>> print(players[-3:])
['michael', 'florence', 'eli']
3.2 遍历切片
>>> print("Here are the first three players on my team:")
Here are the first three players on my team:
>>>
>>> for player in players[:3]:
... print(player.title())
...
Charles
Martina
Michael
3.3 复制列表
要复制一个列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
注意!!!!
一定不能不使用切片!!!
#错误示范!!!!
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods #这样my_foods和friend_foods这两个变量都指向同一个列表,后续对任意一个添加、删除、修改都会同时影响到两个表
4. 元祖
4.1 元祖定义
不能修改的值成为不可变的,而不可变的列表称为元祖。
元祖看起来像列表,但使用的是圆括号。
(1)访问元祖的方法跟访问列表的方法一样。
>>> dimensions = (200, 50)
>>> print(dimensions[0])
200
(2)元祖无法像列表一样直接修改,修改会报错:
dimensions = (200, 50)
>>> dimensions[0]=400
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
修改元祖变量的方法就是对元祖变量重新赋值:
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
#输出
Original dimensions:
200
50
Modified dimensions:
400
100
练习4-10:要注意在运算的时候,如果运算式子中有浮点型,结果可能也是浮点型。切片只能用整型,所以要将浮点型转化为整型,可以用 int()函数。
d=[i**3 for i in range(1,12)]
for i in d:
print(i)
print("the first three items in the list are:")
for i in d[:3]:
print(i)
print("three items from the middle of the list are:")
for i in d[int((len(d)/2)-1.5):int((len(d)/2)+1.5)]: #浮点型转化为整型
print(i)
print("the last three items in the list are:")
for i in d[-3:]:
print(i)