在Python中使用list.index和列表中的重复项

时间:2014-10-23 08:21:49

标签: python list

我正在使用python 3.4

程序中的一个部分有一个问题,它应该返回所有嵌套列表,其中第一个值是最大值。

我首先尝试了以下代码:

L = [['5','4','3'], ['23', '40', '8'], ['33', '24', '29'], ['33', '24', '29'],
 ['13', '66', '54'], ['5', '4', '3']]

BigNumFirst = []
for i in L:
if i[0] > i[1] and i[0] > i[2]:
    BigNumFirst.append(L.index(i))
print(BigNumFirst)

得到以下输出:

[0, 2, 2, 0]

正如您所看到的,问题是list.index()仅返回第一个匹配的嵌套列表,因此重复嵌套列表的索引不正确。我希望输出为:

[0, 2, 3, 5]

我无法弄清楚我应该如何解决这个问题,起初我以为我可以添加一个变量来计算内部存在的副本数量

BigNumFirst

但当然只有在我的尝试显示的情况下只有一个带有重复项的嵌套列表时才有效:

BigNumFirst = []
NumbOfCopys=0
for i in L:
if i[0] > i[1] and i[0] > i[2]:
    if L.index(i) in BigNumFirst:
        NumbOfCopys+=1
    BigNumFirst.append(L.index(i)+NumbOfCopys)

print(BigNumFirst)

输出:

[0, 2, 3, 2]

正如您所看到的,最后一个数字仍然是错误的。那么,我该如何做我的节目"知道"嵌套列表的索引是什么,即使它是先前嵌套列表的副本?

1 个答案:

答案 0 :(得分:1)

只需使用enumerate和列表理解:

>>> [i for i,j in enumerate(L) if max(j)==j[0]]
[0, 2, 3, 5]