繁体   English   中英

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子句不起作用'为止

任何帮助将不胜感激! 提前致谢

然后,我想比较第二个列表的第一行中的第一个值与下一个列表的第一行,以此类推...

听起来您想同时遍历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')

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM