基于索引获取列表中单词中字母的索引

2024-04-26 22:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个单词列表:

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

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

任何帮助都将不胜感激

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

similar question

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


Tags: ofto方法答案元素列表example字母
3条回答

该解决方案可能比公认的解决方案简单得多(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函数设置默认值也很重要,否则可能会出现异常

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

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

解决新问题的简单修改(在word中查找索引):

c = count()
print(next(j for s in l for j, i in zip(range(len(s)), c) if i == 10))
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

相关问题 更多 >