我已经写了一些代码来迭代列表的列表,这些列表基于列表中索引处的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,但是我没有一个很好的解决方案来使函数迭代列表中的整个列表。任何帮助将不胜感激!
答案 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]