【问题标题】:How to pair up two lists? [duplicate]如何配对两个列表? [复制]
【发布时间】:2013-04-30 09:28:48
【问题描述】:

我是一个 Python 初学者,所以如果这是一个非常基本的问题,我深表歉意。

我有两个数据列表来自:

with filein as f:
        reader=csv.reader(f)
        xs, ys = zip(*reader)

我想创建一个循环,将“xs”中的第一项和“ys”中的第一项打印出来。然后我想循环返回并重复两个列表中的第二项,依此类推。

我曾想过这样的事情:

for x in xs and y in ys:

或者

for x in xs:
    for y in ys:

但这些似乎都没有达到预期的效果。

【问题讨论】:

    标签: python list


    【解决方案1】:

    对于一行,您可以使用map()lambda() 的组合。 Look here if not familiar to this concepts.

    但请注意,您必须使用 python 3.x,以便 print 是一个函数并且可以在 lambda 表达式中使用。

    >>> from __future__ import print_function
    >>> l1 = [2,3,4,5]
    >>> l2 = [6,7,3,8]
    >>> list(map(lambda X: print(X[0],X[1]), list(zip(l1,l2))))
    

    输出

    2 6
    3 7
    4 3
    5 8
    

    【讨论】:

    • 不知道为什么这个被否决了,如果是因为打印语句让他们感到困惑,然后使用。列表(地图(λ x:x,列表(zip(l1,l2))))
    【解决方案2】:

    使用zip 函数以及元组解包:

    for x, y in zip(xs, ys):
        print x, y
    

    在您的情况下,根据您需要 xsys 的用途,您可以直接遍历 csv.reader

    with filein as f:
        reader=csv.reader(f)
        for x, y in reader:
            print x, y
    

    zip(xs, ys) 行有效地反转了您的 xs, ys = zip(*reader) 行。

    【讨论】:

      【解决方案3】:

      使用zip:

      >>> L=[1,2,3]
      >>> M=[4,5,6]
      >>> for a,b in zip(L,M):
      ...   print(a,b)
      ...
      1 4
      2 5
      3 6
      

      【讨论】:

        猜你喜欢
        • 2012-07-21
        • 2020-02-29
        • 1970-01-01
        • 1970-01-01
        • 2019-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多