2015-01-15 45 views
0

我需要有关该概念的帮助。我是Python的新手。比较项目1列出1到项目1列表2然后项目2列表2等等。无法正确迭代

我知道我需要一个嵌套for循环,但列表是两种不同的大小。我想循环.dat文件并检查它是否与.csv文件中的项目匹配。事情是这样的东西不比较好。

for row in list1: 
    print(row) 
    for row2 in list2: 
     print(row2[1]) 
     if row == row2[1]: 
      print(“match”) 
     else: 
      print(row2[1] + ' ' + row 

这将吐出的输出是这样的:

list1-item1 
list2-item1 
list2-item1 list1-item1 
list2-item2 
list2-item2 list1-item1 
list2-item3 
list2-item3 list1-item1 

我可以看到它没有正确迭代由于我把放在那里打印。我有两个CSV文件我试图比较(一行分隔'\ n'和一个逗号分隔)。我试图从list1中找到list2中存在的项目,但似乎无法让它遍历list1中的第一个项目?如果Python中有eof,它会更容易。我知道我在某个地方犯了一个愚蠢的错误,我无法弄清楚在哪里。

+0

你可以发布代码,你初始化'list1'和'list2'? – dursk

+0

您发布的代码和问题与标题不匹配。让我们想象两个列表'[1,2,3,4,5]'和'[1,3,2,4,5,7,8]'。您是否想“按索引比较每个项目”,例如1比1(比赛),2比3,3比2,4比4(比赛)等等......或者,你想回答“看看1从list1 - 它是在列表2(匹配),从列表1看2 - isit在列表2(匹配)等...“?换一种方式 - 在我的例子中,你想看3场比赛还是5场?另外,根据mattm,我们可以看到列表初始化 - 因为'row2 [1]'是非常不寻常的 –

回答

0

您好,您的问题是在if子句和print子句中添加索引。您不需要指定索引,甚至更多,您不应该因为这导致意想不到的行为。当从列表中获取for循环中的值时,每次迭代时,定义的变量(row,row2)将只包含列表中的后续项目。你应该改变你的代码如下:

for row in list1: 
    print(row) 
    for row2 in list2: 
     print(row2) 
     if row == row2: 
      print(“match”) 
     else: 
      print(row2 + ' ' + row 
相关问题