【问题标题】:Compare item 1 list one to item 1 list 2 then item 2 list 2 and so forth. Can't iterate properly将项目 1 列表一与项目 1 列表 2 进行比较,然后将项目 2 列表 2 进行比较,依此类推。无法正确迭代
【发布时间】:2015-01-15 22:08:26
【问题描述】:

我需要关于这个概念的帮助。我是 Python 新手。

我知道我需要一个嵌套的 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 会更容易。我知道我在某个地方犯了一个愚蠢的错误,我就是不知道在哪里。

【问题讨论】:

  • 你能把初始化list1list2的代码贴出来吗?
  • 您发布的代码和问题与标题不符。让我们想象两个列表[1,2,3,4,5][1,3,2,4,5,7,8]。您是否要“按索引比较每个项目”,例如 1 到 1(匹配)、2 到 3、3 到 2、4 到 4(匹配)等等...或者,您想回答“看 1从 list1 - 它在 list2 中(匹配),从 list1 中查看 2 - 在 list2 中(匹配)等等......”?换句话说 - 在我的示例中,您希望看到 3 个匹配项还是 5 个匹配项?另外,根据 mattm - 我们可以看到列表初始化 - 因为 row2[1] 非常不寻常

标签: python list nested iteration


【解决方案1】:

您好,您的问题是在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多