操作列表
一、遍历整个列表
使用for循环来打印魔术师名单中的所有名字:
首先我们定义一个列表。接下来,我们定义了一个for循环;这行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们 让Python打印前面存储到变量magician中的名字。
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
输出:
alice
david
carolina
注意:
1、避免缩进错误
2、避免出现不必要的缩进
3、不要忘记for后的冒号
二、创建数值列表
- 使用函数range()
for value in range(1,6):
print(value)
输出:
1
2
3
4
5
- 使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表:
numbers=list(range(1,6))
print(numbers)
输出:
[1, 2, 3, 4, 5]
使用函数range()时,还可指定步长:
even_numbers = list(range(2,11,2))
print(even_numbers)
输出:
[2, 4, 6, 8, 10]
如何将前10个整数的平方加入到一个列表中:
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 对数字列表执行简单的统计计算
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits))
# 0
print(max(digits))
# 9
print(sum(digits))
# 45
- 列表解析
squares = [value**2 for value in range(1,11)] print(squares)
这里的for语句末尾没有冒号。
要创建自己的列表解析,需要经过一定的练习,但能够熟练地创建常规列表后,会发现这样做是完全值得的。当觉得编写三四行代码来生成列表有点繁复时,就应考虑创建列表解析了。
三、使用列表的一部分
切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
#['charles', 'martina', 'michael']
print(players[2:])
#['michael', 'florence', 'eli']
print(players[:2])
#['charles', 'martina']
print(players[-2:])
#['florence', 'eli']
遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[:3]:
print(player)
输出:
charles
martina
michael
复制列表
复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。 这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
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赋给friend_foods
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods #错误的示例
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("\nMy 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']
这里将my_foods赋给friend_foods,而不是将my_foods的副本存储到friend_foods。 这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个 变量都指向同一个列表。鉴于此,当我们将’cannoli’添加到my_foods中时,它也将出现在 friend_foods中;同样,虽然’ice cream’好像只被加入到了friend_foods中,但它也将出现在这 两个列表中。
四、元组
定义元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
输出:
200
50
注意:
试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值。
遍历元组中的所有值
像列表一样,也可以使用for循环来遍历元组中的所有值
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
输出:
200
50
修改元祖变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
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-3 数到20
for number in range(1,21):
print(number)
# 4-4 一百万
for number in list(range(1,100)):
print(number)
# 4-5 计算 1~1 000 000 的总和
numbers=list(range(1,1000001))
print(min(numbers))
print(max(numbers))
print(sum(numbers))
# 4-6 奇数
for number in range(1,21,2):
print(number)
# 4-7 3的倍数
for number in range(3,31,3):
print(number)
# 4-8 立方
squares=[]
for value in range(1,11):
squares.append(value**3);
print(squares)
# 4-9 立方解析
squares=[value**3 for value in range(1,11)]
print(squares)