迭代lis中的列表

2024-04-20 12:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一些代码来迭代一个列表列表,根据列表中某个索引处的i是否大于其他列表中同一索引处的所有其他值j返回true或false:

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]

我知道这可能是因为list的长度是2,但是我没有一个好的解决方案让函数遍历列表中的整个列表。任何帮助都将不胜感激!你知道吗


Tags: 函数代码infalsetrue列表forlen
1条回答
网友
1楼 · 发布于 2024-04-20 12:35:18

尽量避免使用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]

相关问题 更多 >