9

我是一个 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:

但这些似乎都没有给出预期的结果。

4

3 回答 3

15

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

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

在您的情况下,根据您的需要xs和目的ys,您可以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)线。

于 2013-05-06T15:23:44.137 回答
6

使用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
于 2013-05-06T15:24:24.120 回答
0

对于单行,您可以使用map()和的组合lambda()如果不熟悉这个概念,请看这里。

但请注意,您必须使用 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
于 2013-05-07T04:49:00.060 回答