第4章:操作列表
列表的遍历
magicians.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("Thank you, everyone. That was a great magic show!")
创建数值列表
Python函数range() 让你能够轻松地生成一系列的数字
for value in range(1, 5):
print(value)
使用range() 创建数字列表
numbers = list(range(1, 6))
print(numbers)
打印1-10内的偶数
even_numbers = list(range(2,11,2))
print(even_numbers)
函数range() 从2开始数,然后不断地加2,直到达到或超过终值(11)
squares.py
squares = []
for value in range(1,11):
square = value ** 2
squares.append(square)
print(squares)
为让这些代码更简洁,可不使用临时变量square ,而直接将每个计算得到的值附加到列表末尾:
squares = []
for value in range(1,11):
squares.append(value ** 2)
print(squares)
>>> digits = [12, 30, 20, 8, 7,18]
>>> max(digits)
30
>>> min(digits)
7
>>> sum(digits)
95
列表解析
squares = [value ** 2 for value in range(1, 11)]
print(squares)
要使用这种语法,首先指定一个描述性的列表名,如squares ;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2 ,它计算平方值。接下来,编写一个for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为for value in range(1,11) ,它将值1~10提供给表达式value**2 。请注意,这里的for 语句末尾没有冒号。
使用列表的一部分
切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0 、1 和2 的元素。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0: 3])
输出:
['charles', 'martina', 'michael']
没有指定第一个索引,Python将自动从列表开头开始
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[: 4])
输出:
['charles', 'martina', 'michael', 'florence']
如果要提取从第3个元素到列表末尾的所有元素,可将起始索引指定为2 ,并省略终止索引 (不指定第二个索引时,最后的一个元素也会输出)
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2: ])
输出:
['michael', 'florence', 'eli']
负数索引返回离列表末尾相应距离的元素。比如取最后3位
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3: ])
输出:
['michael', 'florence', 'eli']
遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[: 3]:
print(player)
输出:
charles
martina
michael
复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
输出:
My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'ice cream']
行不通的做法:
my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
输出:
My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识
如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它们是不能修改的:
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
输出:
200
50
注意: 由于试图修改元组的操作是被禁止的
遍历元组的值
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
修改元组变量
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-1
pizzas = ['海鲜披萨', '肉食主义披萨', '榴莲披萨']
for pizza in pizzas:
print("我喜欢" + pizza +"!")
print("我非常喜欢披萨!")
4-2
animals = ['cat', 'dog', 'mole']
for animal in animals:
print("A " + animal + " would make a great pet.")
print("Any oftheseanimals would makea great pet.")
4-3
for number in range(1, 21):
print(number)
4-4
for number in range(1, 1000001):
print(number)
4-5
numbers = list(range(1, 1000001))
print(min(numbers))
print(max(numbers))
print(sum(numbers))
4-6
for odd_number in range(1, 21, 2):
print(odd_number)
4-7
for three_number in range(3, 31, 3):
print(three_number)
4-8
cubes = []
for value in range(1, 11):
cubes.append(value ** 3)
for cube in cubes:
print(cube)
4-9
cubes = [value ** 3 for value in range(1, 11)]
for cube in cubes:
print(cube)
4-10
my_foods = ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
print("The first threeitems in the list are:")
print(my_foods[:3])
print("--------------------------------------------")
print("Three items fromthe middle of the list are:")
print(my_foods[1: 4])
print("--------------------------------------------")
print("The last three items in the list are:")
print(my_foods[-3:])
4-11
my_pizzas = ['海鲜披萨', '肉食主义披萨', '榴莲披萨']
friend_pizzas = my_pizzas[:]
my_pizzas.append('水果披萨')
friend_pizzas.append('魔鬼披萨')
print('我最喜欢的披萨:')
for my_pizza in my_pizzas:
print(my_pizza)
print("-------------------------------")
print('我朋友最喜欢的披萨:')
for friend_pizza in friend_pizzas:
print(friend_pizza)
4-12
#可以用4-11的
4-13
zizhu_foods = ('面条', '牛奶', '蛋糕', '冰淇淋', '蟹肉棒')
for zizhu_food in zizhu_foods:
print(zizhu_food)
# test
# zizhu_foods(0) = '水果'
print("-----------------------------------")
zizhu_foods = ('水果', '牛奶', '蛋糕', '冰淇淋', '蟹肉棒')
for zizhu_food in zizhu_foods:
print(zizhu_food)