01
—
善用枚举函数 enumerate()
seasons = ['spring', 'summer', 'autumn', 'winter']
i=0
for season in seasons:
print(i,season)
i+=1
运行结果:
0 spring
1 summer
2 autumn
3 winter
这里需要创建i作为计数变量,略显累赘。
而使用enumerate() 函数的写法可以使代码更加简单易读:
seasons = ['spring', 'summer', 'autumn', 'winter']
for i,season in enumerate(seasons):
print(i,season)
运行结果同样为:
0 spring
1 summer
2 autumn
3 winter
enumerate() 同样可以指定索引的起始值,例如我们希望索引由1开始:
seasons = ['spring', 'summer', 'autumn', 'winter']
for i,season in enumerate(seasons,1):
print(i,season)
运行后可以看到索引由1开始:
1 spring
2 summer
3 autumn
4 winter
02
—
善用zip()函数
a_list = [1, 2, 3]
b_list = [7, 8, 9]
for i in range(len(a_list)):
a = a_list[i]
b = b_list[i]
print(a, b)
输出为:
1 7
2 8
3 9
面对数组较多的情况时,上述写法效率十分低下,使用zip函数可以改写为:
for a,b in zip(a_list,b_list):
print(a, b)
运行后可以达到同样的效果。
03
—
元组拆包
x = 10
y = 1
print('Before: x = %d, y = %d' % (x, y))
tmp = y
y = x
x = tmp
print('After: x = %d, y = %d' % (x, y))
运行结果为:
Before: x = 10, y = 1
After: x = 1, y = 10
而元组拆包指的就是将元组内的元素,依次分配赋值给变量。
将x、y用逗号隔开以初始化一个元组,接着交换顺序就达到了将元组拆包到y、x的目的。因此可将上述的值交换代码改写为:
x = 10
y = 1
print('Before: x = %d, y = %d' % (x, y))
x ,y = y, x
print('After: x = %d, y = %d' % (x, y))
运行结果为:
Before: x = 10, y = 1
After: x = 1, y = 10
可以看到仅需一行代码就可以实现值交换。
需要注意拆包有个要求,就是元组中的元素数量必须跟接受这些元素的空档数一致,否则会报错。
例如:
x_list = [1, 2, 3, 4]
a, b , c = x_list
print(a,b,c)
元组中的元素数量少于数组,运行后会出现下述错误信息:
ValueError: too many values to unpack (expected 3)
联系客服