【问题标题】:for and if/else loop with nested if statement not working in python带有嵌套 if 语句的 for 和 if/else 循环在 python 中不起作用
【发布时间】:2015-10-13 12:41:19
【问题描述】:

下面是我的代码,用于将我的列表分隔为列表列表,然后如果这些列表中的值匹配,则打印单词“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'的地方

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

【问题讨论】:

  • 您可以提供输入文件的样本
  • 您循环遍历row1 的所有元素,每次都首先重新分配给hihi 在循环结束时将始终为 row1[ -1 ][ 0 ]

标签: python list loops nested


【解决方案1】:

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

听起来您想同时迭代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 意味着您开始查看每个列表的 第二个 元素,而不是第一个。如果要遍历完整列表,请使用 range(len(row1))range(len(row2))

【讨论】:

  • 非常感谢您!这似乎是一个更好的方法来做到这一点。但是,除了 'runfile('/Users/name/Desktop/matrices1.py', wdir='/Users/name/Desktop')' 之外,我仍然没有得到任何输出,这是无意的,所以谢谢!
  • 我发现哪里出错了.. 也使用你的方法,如果 row2[j][1] == hi ,而不是 row2[j][0] == hi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 2023-03-30
相关资源
最近更新 更多