0

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

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

或同等的

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

这两个片段都允许我访问每个项目的元组以及整体。但是有没有一种符号可以以某种方式将这两行组合到 for 语句中?这似乎是一个 Python 风格的功能,我认为它可能以某种形状或形式存在。

4

3 回答 3

2

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

>>> 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用作变量名。

于 2013-06-09T10:40:24.240 回答
2

pythonic方式是您提到的第一个选项:

for tup in list:
    a,b,c,d,e = tup
于 2013-06-09T10:45:25.343 回答
0

Python 中并没有真正内置的东西可以让你这样做,因为绝大多数时候,你只需要以一种或另一种方式访问​​元组:作为元组或作为单独的元素。无论如何,像

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

看起来很干净,我无法想象有什么充分的理由希望它比这更浓缩。这就是我在极少数需要这种访问权限的情况下所做的。

如果您只需要获取元组的一两个元素,例如可能ce仅,并且您不需要重复使用它们,则可以使用t[2]和访问它们t[4]。这减少了代码中变量的数量,这可能使其更具可读性。

于 2013-06-09T10:46:24.527 回答