2

如果满足两个条件,我正在尝试在列表中查找索引,并将这些索引存储在新列表中。目前我可以在列表中找到满足条件的条目,但无法弄清楚如何获取列表索引。

名单是:

[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]]

到目前为止我的代码:

m2=[]
for i in range(0,len(gmcounter)):
  if countersum[i]==2 and 2 in gmcounter[i]:
    m2.append(gmcounter[i])
print m2

Countersum 是一个包含列表元素总和的列表,因此返回[[0, 2], [2, 0]] 并且我希望 m2 采用满足两个条件的索引值,所以我希望它采用 m1[4,5]

我有一个想法,这将与 enumerate 函数有关,但到目前为止我尝试包含它并没有奏效

非常感谢任何帮助!

4

2 回答 2

3

i已经是满足这两个条件的索引。

使用enumerate(), 可能结合zip()将是更 Pythonic 的方法:

m2=[]
for i, (csum, counter) in enumerate(zip(countersum, gmcounter)):
    if csum == 2 and 2 in counter:
        m2.append(i)

或者,使用列表推导:

m2 = [i for i, (csum, counter) in enumerate(zip(countersum, gmcounter)) if csum == 2 and 2 in counter]
于 2013-05-16T11:55:52.667 回答
1

您可以像@Martijn 那样完全不使用索引。或者您可以采用基于索引的方法并简单地构建您想要的索引列表:

[ i for i in range(len(gmcounter)) if countersum[i]==2 and 2 in gmcounter[i] ]

这不那么“pythonic”,而且可能有点慢,所以一定要了解无索引的做事方式。

于 2013-05-16T12:01:11.810 回答