我是一个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:
但这些似乎都没有给出理想的结果。
答案 0 :(得分:11)
使用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)
行。
答案 1 :(得分: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
答案 2 :(得分:0)
对于一行,您可以使用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