根据索引获取列表中单词中字母的索引



假设我有一个单词列表:

l = ['example', 'to', 'a', 'list', 'of', 'words']

我得到一个索引I,比方说10

我需要的是返回l中包含第I个字符的单词内字母的索引

所以在10的例子中,因为第10个元素(基于零(是单词list中的l,所以我需要返回的是0,因为l是单词中的第一个字母。

例如,对于i=17,输出将为1,因为17指的是words-中的字母o,而words中的o的索引为1。

Iv一直在想一个简单的方法来做这件事,但我没有找到优雅的东西。

任何帮助都将不胜感激!

我问了一个类似的问题,在这里得到了很好的答案:

类似问题

但是找不到一个好的方法来修改我在这里需要的答案。

您在上一个问题中接受的解决方案(查找单词(:

c = count()
print(next(s for s in l for _, i in zip(s, c) if i == 10))

解决新问题的小修改(在单词中查找索引(:

c = count()
print(next(j for s in l for j, i in zip(range(len(s)), c) if i == 10))

解决方案可能比公认的解决方案简单得多(l是你的单词欲望,i是字母的索引(:

from string import ascii_lowercase as alphabet
result = next((idx for idx, x in enumerate(l) if alphabet[i] in x), None)

你可以使用任何字母表(在这种情况下,我使用了'abcdefghijklmnopqrstuvwxyz'(。此外,为next函数设置默认值也很重要,否则可能会出现异常。

l = ['example', 'to', 'a', 'list', 'of', 'words']
index = 10
fl = [(c[1], c[0], w[1], w[0]) for w in enumerate(l) for c in enumerate(w[1])]
print('char = ' + fl[index][0] +
', index in word = ' + str(fl[index][1]) +
', word = ' + fl[index][2])
# char = l, index in word = 0, word = list

如果你只需要单词中的索引:

fl2 = [c[0] for w in enumerate(l) for c in enumerate(w[1])]
print('index in word = ' + str(fl2[index]))
# index in word = 0

最新更新