for 和 if/else 循环嵌套 if 语句在 python 中不起作用

for and if/else loop with nested if statement not working in python

下面是我的代码,用于将我的列表分成列表列表,如果这些列表中的值匹配,则打印单词 'hello'...但是我在使用它时遇到了一些问题。据我所知,所有语法都是正确的,只是输出不起作用。

import csv
import operator
import itertools
import matplotlib.pyplot as plt

with open('data.txt', 'r') as f:
    csv_input = csv.reader(f, delimiter=' ', skipinitialspace=True)
    headers = next(csv_input)

    counter = 0
    i = 1

    for k, g in itertools.groupby(csv_input,key=operator.itemgetter(3)):
        row = []
        for entry in g:
            entry = [float(e) for e in entry]
            row.append(entry)
        counter = counter+1
        i = i+1
        #print(row)  #(not necessary to see the results hence commented out)
        if counter == 1: 
            row1 = row
        else:
            row2 = row
            for i in range(1, len(row1)):          
                hi = row1[i][0]
            for j in range(1,len(row2)):
                if row2[j][0] == hi:      #this clause doesnt work
                    print('hello')
            counter=1 
            row1=row

我在这里所做的是将第一个列表中的第一个值与下一个列表第一行中的第二个值进行比较。然后,我想将第二个列表第一行的第一个值与下一个列表的第一行进行比较,依此类推……(我知道这看起来很混乱!),如果这些值相同,然后它会绘制一条线,但为了简单起见,我们只说它会打印('hello'),因为代码一直运行到它被标记为“#this clause doesn't work”

如有任何帮助,我们将不胜感激!提前致谢

Then, I want to compare the 1st value from first line of the second list, with the first line of the next list, and so on...

听起来您想同时迭代 ij。现在,您正在迭代 i,然后停止,然后迭代 j。尝试使用 zip.

替换

        for i in range(1, len(row1)):          
            hi = row1[i][0]
        for j in range(1,len(row2)):
            if row2[j][0] == hi:
                print('hello')

        for i, j in zip(range(1, len(row1)), range(1,len(row2))): 
            hi = row1[i][0]
            if row2[j][0] == hi:
                print('hello')

此外,不确定这是否是有意的 - 在 1 处开始 range 意味着您开始查看每个元素的 second 元素列表,而不是第一个。如果要遍历完整列表,请使用 range(len(row1))range(len(row2))