在列表中索引元素

15 浏览
0 Comments

在列表中索引元素

我想获取列表 a=[2,4,5,2] 中每个元素的索引。\n当我输入 a.index(2) 时,输出为0。如何以类似的方式获取第四个元素的索引在Python中?

0
0 Comments

问题的出现原因是需要对列表中的元素进行索引,即找到每个元素在列表中的位置。解决方法是使用字典或collections模块中的defaultdict()函数来存储每个元素的索引。

首先,可以使用defaultdict()函数来存储每个元素的索引。代码如下:

from collections import defaultdict
a=[2,4,5,2]
indexes = defaultdict(list)
for i, e in enumerate(a):
    indexes[e].append(i)
print(indexes)

运行结果如下:

defaultdict(, {2: [0, 3], 4: [1], 5: [2]})

这样,可以通过访问indexes字典来获取每个元素的索引。例如:

>>> indexes[2]
[0, 3]
>>> for i in indexes[2]:
...     print(i, '-->', a[i])
... 
0 --> 2
3 --> 2

另外,也可以使用dict.setdefault()函数来实现相同的功能。代码如下:

indexes = {}
for i, e in enumerate(a):
    indexes.setdefault(e, []).append(i)
print(indexes)

运行结果也是相同的:

{2: [0, 3], 4: [1], 5: [2]}

可以看到,使用dict.setdefault()函数也可以实现相同的效果。此外,还可以使用indexes.setdefault(e, list()).append(i)或indexes.setdefault(e, []).append(i)来实现相同的功能,甚至更加高效。

0
0 Comments

在给定的代码中,我们可以看到一个使用列表推导式的语句,用来获取列表中特定元素的索引。具体的代码如下:

[print i for i,v in enumerate(a) if v==2] # or any number

这段代码的目的是打印出列表中值为2的元素的索引。然而,在第一条评论中指出,为什么要调用print函数,并且这似乎是一个Python2的问题。在第二个评论中,作者回答了这个问题,表示将删除print函数调用,并解释了在Python2中使用括号仍然有效,只是简化了表达式。

因此,这个问题的原因是代码中包含了不必要的print函数调用,而解决方法是删除该调用。修正后的代码如下:

[i for i,v in enumerate(a) if v==2] # or any number

这样,代码将只返回列表中值为2的元素的索引,而不是打印出来。

0
0 Comments

索引元素在一个列表中是一个常见的操作,但有时候可能会遇到问题。下面我们来看一下为什么会出现这个问题以及解决方法。

出现问题的原因可能是因为我们需要找到列表中特定元素的索引,但不知道如何实现。在这种情况下,可以使用列表推导式来解决这个问题。列表推导式是一种简洁的方式来创建新的列表,可以根据特定的条件从现有列表中选择元素。

为了找到列表中所有特定元素的索引,我们可以使用下面的代码:

indices = [i for i in xrange(len(a)) if a[i] == 2]

在这个代码中,我们使用了一个列表推导式。首先,我们使用range(len(a))来生成一个包含所有索引的列表。然后,我们使用if a[i] == 2来筛选出所有值为2的元素的索引。最后,我们将筛选出的索引组成一个新的列表。

这样,我们就得到了包含所有值为2的元素的索引的列表indices

总结一下,索引元素在一个列表中是一个常见的需求。为了解决这个问题,我们可以使用列表推导式来筛选出特定元素的索引。通过这种方式,我们可以轻松地找到列表中特定元素的索引,而不需要遍历整个列表。这样,我们可以更高效地处理列表中的数据。

0