操作列表

遍历列表

用for循环来打印列表中所有元素

magicians=['alice','davia','carolina']
for magician in magicians:
 print(magician)
alice
davia
carolina

在for循环中执行更多操作

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

magicians=['alice','davia','carolina']
for magician in magicians:
 print(magician.title()+', that is a good trick')
 Alice, that is a good trick
Davia, that is a good trick
Carolina, that is a good trick

在代码行for magician in magicians:后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每一个值都执行一次,因此可对列表中的每一个值执行任意次操作

magicians=['alice','davia','carolina']
for magician in magicians:
 print(magician.title()+', that is a good trick')
 print('I can wait to see your next trick,'+magician.title()+'.\n')
 Alice, that is a good trick
I can wait to see your next trick,Alice.

Davia, that is a good trick
I can wait to see your next trick,Davia.

Carolina, that is a good trick
I can wait to see your next trick,Carolina.

由于每个print语句都缩进了,所以他们都将针对列表的每一个元素执行一次

在for循环结束后执行一些操作

在for循环后面,没有缩进的代码都只执行一次,不会重复执行。

magicians=['alice','davia','carolina']
for magician in magicians:
 print(magician.title()+', that is a good trick')
 print('I can wait to see your next trick,'+magician.title()+'.\n')
print('Thank you')

Alice, that is a good trick
I can wait to see your next trick,Alice.

Davia, that is a good trick
I can wait to see your next trick,Davia.

Carolina, that is a good trick
I can wait to see your next trick,Carolina.

Thank you

避免缩进错误

忘记缩进

忘记缩进额外的代码行

magicians=['alice','davia','carolina']
for magician in magicians:
 print(magician.title()+', that is a good trick')
print('I can wait to see your next trick,'+magician.title()+'.\n')

Alice, that is a good trick
Davia, that is a good trick
Carolina, that is a good trick
I can wait to see your next trick,Carolina.

由于第二条print()语句没有缩进,他只在循环结束后执行一次,而magician最后的值是carolina,所以只有carolina收到了消息。

不必要的缩进/循环后不必要的缩进

遗漏了冒号

创建数字列表

可用函数range()

for value in range(1,5):
 print(value)
 
 1
 2
 3
 4

函数range()让python从你指定的第一个值开始数,到达指定的第二个数结束,而不会打印第二个值,所以这里不包含5

使用range()创建数字列表

可用函数list()将range()的结果直接转换为列表,range()可直接作为list()的参数,输出将为一个数字列表

n=list(range(1,10))
print(n)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

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

n=list(range(2,11,2))
print(n)

这个实例中,函数range()从2开始数,然后不断加2,直到到达或超过终值11

使用range()函数,几乎能够创建任何需要的数字集,例如下面的实例

s=[]
for value in range(1,11):
 h=value**2
 s.append(h)
print(s)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

对数据列表执行简单的统计计算

有几个专门处理数字列表的pythin函数:min,max,sum等等

列表解析

前面介绍的生成列表s的方式包含三四行代码,列表解析只需要一行即可,它将for循环和创建新元素的代码合并成一行,并自动添加新元素。

s=[v**2 for v in range(1,11)]
print(s)

首先指定一个列表名,然后,指定一个表达式来生成你要存到列表中的值,在这个实例中,表达式为v**2,然后编写一个for循环,给表达式提供值,注意这里没有冒号

使用列表的一部分

切片

要创建切片,它的索引和函数range()一样都是在到达第二个索引前面的元素后停止

q=['a','b','c','d']
print(q[0:3])
['a', 'b', 'c']

如果你没有指定第一个索引,python将从第一个元素提取

print(q[:3])

要让切片终止于列表末尾,可省略终止索引

q=['a','b','c','d']
print(q[2:])
['c', 'd']

使用负数索引来输出列表的最后几个元素

q=['a','b','c','d']
print(q[-3:])
['b', 'c', 'd']

遍历切片

切片可以和for循环搭配使用

q=['a','b','c','d','e','f']
for m in q[:4]:
 print(m)
a
b
c
d

复制列表

复制列表的方法是创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引

my_food=['a','s','d']
frends_food=my_food[:]
print(my_food)
print(frends_food)
['a', 's', 'd']
['a', 's', 'd']

注意这是两个不同的列表

元组

定义元组

列表是可以修改的,但是有时需要不能修改的,不可变的列表叫做元组,元组使用圆括号,而不是方括号

d=(12,34)
print(d[0])
print(d[1])
12
34

d[0]=13
将会报错

遍历元组所有的值

像列表一样,用for循环来遍历元组所有的值

d=(12,34)
for s in d:
 print(s)
12
34

修改元组变量

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

d=(12,34)
print(d[0])
print(d[1])
d=(23,34)
print(d[0])
print(d[1])

设置代码格式

建议每级缩进都是用四个空格,混合使用制表符和空格可能导致问题

建议每行不超过72个字符

使用空行来把程序的不同部分分隔开

PEP8 还有其他格式推荐