序列解包
多个赋值操作可以同时进行 x, y, z = 1, 2, 3
也可以x, y = y, x
上述的赋值实际上进行了序列解包——将多个值的序列展开,然后放到变量的序列中。如下所示
>>>values = 1, 2, 3
>>> values
(1, 2, 3)
>>>x, y, z = values
>>>x
1
当函数或方法返回元组时,这个特性十分有用。popitem方法(删除一个键值对)可将字典中的键值对以元组的方式返回。
>>>sounderl = {'name':'Robin', 'girlfriend':'Alice'}
>>>key, value = sounderl.popitem()
>>>key
'girlfriend'
>>>value
'Alice'
is:同一性运算符
>>>x = y = [1, 2, 3]
>>>z = [1, 2, 3]
>>> x == y
True
>>>x == z
True
>>>x is y
True
>>>x is z
False
is是判断同一性而不是是否相等,x与y绑定在同一列表上,z则绑定在另一列表上,虽然它们的值相等
断言
assert 的工作方式类似于
if not condition:
crash program
并行迭代
zip函数可以将多个序列压缩在一起,然后返回一个元组的列表:
>>>zip(names, ages)
[('anne', 12), ('beth', 45), ('george', 32)]
在循环中使用zip函数进行并行迭代:
for name, age in zip(names, ages)
print name, 'is', age, 'years old'
编号迭代
enumerate函数可以在提供索引的地方迭代索引-值对
for index, string in enumerate(strings):
if 'xxx' in string:
strings[index] = '[censored]'