【问题标题】:How do I loop through a tuple of lists element-wise? [duplicate]如何按元素循环遍历列表元组? [复制]
【发布时间】:2016-10-07 03:20:31
【问题描述】:

我有一个返回两个列表元组的函数

def two_lists():
    return [1, 2, 3], ['a', 'b', 'c']

我想以类似的方式循环遍历元组

for v1, v2 in two_lists():
   print v1, v2

output:
    1, a
    2, b
    3, c

我发现的唯一方法我觉得相当麻烦!

a, b = two_lists()
for i, y in zip(a, b):
    print i, y

有没有更漂亮、更 Pythonic 的方式来实现这一点?

【问题讨论】:

  • 如果你想让它更简洁,你可以做for i, y in zip(*two_lists()),它将原地打包元组。否则,如果你想说zip 不是pythonic,我不同意。
  • 编辑添加 Python 2 标签。
  • 请,请,请不要使用列表推导来解决它们的副作用。这是非常糟糕的做法和低效。永远不会有正确的解决方案。
  • 那么,有一个带有[None, None, None, None] 的结果列表可以吗?这似乎不是最好的建议。我建议不要使用该列表组合解决方案。
  • 另一种不错的 python 3 方式(仅限 Python 3.5 或更高版本),应该可以满足上述所有投诉:print( *((i,y) for i,y in zip(*twolists()), sep = '\n')

标签: python python-2.x


【解决方案1】:

当然,您可以在 zip 调用中直接解压缩 two_lists()。

for i, y in zip(*two_lists()):
    print i, y

这是执行此操作的惯用方式。

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多