迭代两个表示法中的元组列表

时间:2013-06-09 10:36:05

标签: python tuples

我正在迭代一个元组列表,只是想知道是否有一个较小的符号来执行以下操作:

for tuple in list:
    (a,b,c,d,e) = tuple

或等效的

for (a,b,c,d,e) in list:
    tuple = (a,b,c,d,e)

这两个snippits都允许我每个项目以及整体访问元组。但有没有一种表示法以某种方式将这两行合并到for语句中?看起来像Pythonesque这样的特征,我认为它可能以某种形状或形式存在。

3 个答案:

答案 0 :(得分:2)

这可能是你可以使用的黑客攻击。可能有更好的方法,但这就是为什么它是一个黑客。你的例子都很好,这就是我肯定会这样做的。

>>> list1 = [(1, 2, 3, 4, 5)]
>>> for (a, b, c, d, e), tup in zip(list1, list1):
       print a, b, c, d, e
       print tup

1 2 3 4 5
(1, 2, 3, 4, 5)

另外,请不要将tuple用作变量名。

答案 1 :(得分:2)

pythonic方式是你决定的第一个选择:

for tup in list:
    a,b,c,d,e = tup

答案 2 :(得分:0)

Python中没有任何内容可以让你这样做,因为绝大多数时候,你只需要以某种方式访问​​元组:作为元组或作为单独的元素。在任何情况下,像

for t in the_list:
    a,b,c,d,e = t

看起来很干净,我无法想象有什么理由要求它更加浓缩。这就是我在极少数情况下需要这种访问的方式。

如果您只需要获取元组的一个或两个元素,可能只说ce,并且您不需要重复使用它们,则可以将它们作为{{ {1}}和t[2]。这减少了代码中变量的数量,这可能使它更具可读性。