序列解包

多个赋值操作可以同时进行 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]'