链式比较
区间判断时可以使用更为直观的链式比较:
score = 88
if 80
print("come on...")
# come on...
解压可迭代对象
使用赋值语句可以解压可迭代对象(元组、列表、字符串等)并将各个元素分别赋值给多个变量。变量的数量必须跟序列元素的数量一样,否则会产生ValueError异常。
x,y = 3,5
x,y = y,x
# x=5, y=3x,y = y, x+y
# x=3, y=8
L = [1,2,(3,4)]
a,b,c = L
# a=1,b=2,c=(3,4)
p = (4, 5)
x, y, z = p
Traceback (most recent call last):
File "", line 1, in
ValueError: need more than 2 values to unpack
当确实需要以较少数量的变量去解压更多元素的可迭代对象时,可以使用星号表达式。其效果类似于函数的可变位置参数*argv。
x,*y,z = [3,5,7,9]
# x=3, y=[5,7], z=9
# 注意解压出的变量y为列表类型,即便元素数量可能为0x,*y,z = [3,5]
# x=3, y=[], z=5
# *x将x解压为(1,2,3), (4,5,6), (7,8,9)
# 然后作为zip的参数x=[[1,2,3],[4,5,6],[7,8,9]]
[list(item) for item in zip(*x)]
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
如果只想解压一部分而丢弃其他的值,可以使用任意变量名占位:
L = [1,2,(3,4)]
_, _, x = L
# x=(3,4)
遍历列表/元组
直接使用for...in语句遍历,结合reversed()和sorted()函数可以按照需求顺序遍历:
colors = ['red', 'green', 'blue', 'yellow']
# 遍历列表for color in colors:
print(color)
# 反向遍历for