一、游离整个列表

需要对列表中的每个元素都执行相同的操作时,可使用Python中的for 循环。

使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。

在for 循环中,可对每个元素执行任何操作。

pizzas=['cheese pizza', 'free pizza', 'deep dish pizza', 'Greek pizza']
for pizza in pizzas:
	print("l like "+pizza)
print("l really like pizza")

结果为:

l like cheese pizza
l like free pizza
l like deep dish pizza
l like Greek pizza
l really like pizza

注:1.对于位于for 语句后面且属于循环组成部分的代码行,一定要缩进。

2.切勿忘记冒号

二、创建数值列表

1.使用函数range()

Python函数range() 让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数range() 来打印一系列的数字:

for number in range(1,5)
    print(number)

结果为:

1

2

3

4

5

函数range() 让Python从你指定的第一个值开始数,并在到达你指定的第二个值 后停止,因此输出不包含第二个值。

使用range() 时,如果输出不符合预期,请尝试将指定的值加1或减1。

2.使用range() 创建数字列表

numbers=list(range(1,10000001))
print(numbers)

使用函数range() 时,还可指定步长

odd_numbers=list(range(1,21,2))
for odd_number in odd_numbers:
	print(odd_number)

结果为:

1
3
5
7
9
11
13
15
17
19

3.对数字列表执行简单的统计计算

numbers=list(range(1,10000001))
print(min(numbers))
print(max(numbers))
print(sum(numbers))

结果为:

1
10000000
50000005000000

cubes=[]
for number in range(1,11):
	cube=number**3
	cubes.append(cube)
print(cubes)

cubes=[]
for number in range(1,11):
	cubes.append(number**3)	
print(cubes)

结果均为:[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

4.列表解析

cubes=[number**3 for number in range(1,11)]
print(cubes)

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

要使用这种语法,首先指定一个描述性的列表名,如cubes ;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式 为number**3 ,它计算方立值。接下来,编写一个for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为for number in range(1,11) ,它将值 1~10提供给表达式number**3 。请注意,这里的for 语句末尾没有冒号。

三、使用列表的一部分(切片)

1.切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需 要指定索引0~3,这将输出分别为0 、1 和2 的元素。

print("The first three items in the list are:")
print(names[0:3])

结果为:

The first three items in the list are:
['gong xin', 'qiao mei', 'guo jia le']

如果你没有指定第一个索引,Python将自动从列表开头开始

要让切片终止于列表末尾,也可使用类似的语法。

无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。本书前面说过,负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。 例如,如果你要输出名单上的最后三名队员,可使用切片players[-3:] 

2.遍历切片

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:") 
for player in players[:3]:
    print(player.title())

结果为:Here are the first three players on my team: Charles Martina Michael

3.复制列表

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

pizzas=['cheese pizza', 'free pizza', 'deep dish pizza', 'Greek pizza']
friend_pizzas=pizzas[:]
pizzas.append('pepperoni pizza')
friend_pizzas.append('new york style pizza')  #若不复制列表,后添加的元素都在一个列表中
print('\nMy favorite pizzas are:')
for pizza in pizzas:
    print(pizza)
print("\nMy friend's favorite pizzas are:")
for friend_pizza in friend_pizzas:
    print(friend_pizza)

结果为:

My favorite pizzas are:
cheese pizza
free pizza
deep dish pizza
Greek pizza
pepperoni pizza

My friend's favorite pizzas are:
cheese pizza
free pizza
deep dish pizza
Greek pizza
new york style pizza

四、元组

Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

foods=('apple','banana','pear','vegetables','starwberry')
for food in foods:
    print(food)
food[0]='safi'      #代码试图修改第一个元素的值,导致Python返回类型错误消息。由于试图修改元组的 
                     操作是被禁止的,因此Python指出不能给元组的元素赋值
foods=('apple','banana','pear','dragonfruit','nut')  #给元组赋值
for food in foods:
    print(food)

虽然不能修改元组的元素,但可以给存储元组的变量赋值