如何查找列表中具有相同字符串的所有索引?

时间:2015-10-11 04:50:50

标签: python list python-3.x indexing

在Hangman游戏中,如果隐藏的单词是james@james-Aspire-E5-472G:/usr$ find -name libgcc*.* ./lib32/libgcc_s.so.1 ./lib/ure/lib/libgcc3_uno.so ./lib/x86_64-linux-gnu/libgccpp.so.1.0.3 ./lib/x86_64-linux-gnu/libgccpp.so.1 ./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so ./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc_s.so ./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc_eh.a ./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc.a ./lib/gcc/x86_64-linux-gnu/4.9/libgcc_eh.a ./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc_s.so ./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc_eh.a ./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc.a ./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s_x32.so ./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s_32.so ./lib/gcc/x86_64-linux-gnu/4.9/libgcc.a ./libx32/libgcc_s.so.1 ./share/doc/libgcc-4.9-dev james@james-Aspire-E5-472G:/usr$ find -name crtbegin.o ./lib/gcc/x86_64-linux-gnu/4.9/crtbegin.o ./lib/gcc/x86_64-linux-gnu/4.9/32/crtbegin.o ./lib/gcc/x86_64-linux-gnu/4.9/x32/crtbegin.o 且玩家猜到hello,那么我需要找到两个位置的索引。

示例:

l

我无法想出任何方法来找到第二个。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

好吧,你可以使用enumerate和列表理解:

>>> s = "hello"
>>> indexes = [i for i, v in enumerate(s) if v == "l"]
>>> indexes
[2, 3]

答案 1 :(得分:0)

特别是对于刽子手:

>>> word = 'hello'
>>> guess = 'l'
>>> puzzle = ''.join(i if i == guess else '_' for i in word)
>>> print(puzzle)
__ll_

答案 2 :(得分:0)

您可以做的另一件事是预处理这个词,并且已经在地图中提供了索引列表,因此您不必一直只通过字符串迭代一次。

word = "hello"

map = {}

for i, c in enumerate(word):
    if (c in map):
        map[c].append(i)
    else:
        map[c] = [i]

然后,检查猜到的字母是否在地图中。如果是,则该字母存在,否则不存在。