python 返回具有相同元素的列表的索引

xt0899hw  于 2023-05-21  发布在  Python
关注(0)|答案(3)|浏览(142)

我想返回列表元素的索引,但是对于重复的元素,它返回第一个索引

X=['m','t','z','m']
For i in x:
   Print(x.index(i))

输出:

0
1
2
0

预期输出:

0
1
2
3

我的问题是在索引m上,如果它不从be开始搜索列表,我该怎么办?

ehxuflar

ehxuflar1#

可以使用enumerate和map,但请记住enumerate和map返回一个可迭代对象。要查看这些值,您可以将它们转换为list by list()并打印它们。

foo = enumerate(['m','t','z','m'])
print(list(foo)) # [(0, 'm'), (1, 't'), (2, 'z'), (3, 'm')]

# now we have tuples of index and value
# next we use map to just get the index, a.k.a first value
bar = map(lambda x: x[0], foo) 
print(list(bar)) # [0, 1, 2, 3]

编辑:正如@jasonharper所说,如果你只需要index,range()就可以完成这项工作

baz = ['m','t','z','m']
foo = range(len(baz)) # 0 1 2 3

# if you only want the index of certain value you can do
bar = filter(lambda x: baz[x] == "m", foo)
print(list(bar)) # [0, 3]

但是记住range()和filter()返回一个iterable。

oewdyzsn

oewdyzsn2#

你想要的是enumerate

for index, element in enumerate(X):
    print(index)
jrcvhitl

jrcvhitl3#

for i, element in enumerate(X):
    print(index)

相关问题