遍历列表中的列表

时间:2019-07-10 02:31:07

标签: python list loops

我已经写了一些代码来迭代列表的列表,这些列表基于列表中索引处的class GuiPart: def __init__(self, master, queue, endCommand,newWindow): self.queue = queue self.pause = False .... def processIncoming(self): while self.queue.qsize() and not self.pause: try: msg = self.queue.get(0) print (msg) self.output.set(msg) except queue.Empty: pass 是否大于列表中相同索引处的所有其他值i来返回true或false。其他列表:

j

这样可以很好地找到正确的答案。但是,问题在于该函数不会像我希望的那样遍历列表中的整个列表。例如,从这样的列表中:

for i in range(len(list)):
    for j in range(0, len(list)):
        if (np.any(list[i]) >= np.all(list[j])):
            count = count + 1
            results.append((count == len(list) - 1))

print (results)

我期望这样的输出:

list =[[1, 3, 6, 5, 9], [7, 2, 8, 9, 1]]

但是,它仅迭代前两个索引并停止。

results = [False, True, True, False, False, True, False, True, True, False]

我知道这可能是因为results = [False, True, True, False] 的长度为2,但是我没有一个很好的解决方案来使函数迭代列表中的整个列表。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

尽量避免将Python关键字用作变量名(例如:list)。但是,如果您在循环之前计算每列的最大值,则可以像下面这样更轻松地计算出自己的结果:

代码:

lst = [[1, 3, 6, 5, 9], [7, 2, 8, 9, 1]]
maxes = [max(x) for x in zip(*lst)]
print([r == m for row in lst for r, m in zip(row, maxes)]

或作为标准的for循环:

result = []
for row in lst:
    for r, m in zip(row, maxes):
        result.append(r == m)

结果:

[False, True, False, False, True, True, False, True, True, False]