【问题标题】:Get index of letter in word in list based on index根据索引获取列表中单词中字母的索引
【发布时间】:2020-12-01 22:48:18
【问题描述】:

假设我有一个单词列表:

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

我得到一个索引 i,比如说10

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

所以在 10 的示例中,因为第 10 个元素(从零开始)是来自单词 listl - 我需要返回的是 0,因为 l 是第一个字母这个词。

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

我一直在想一个简单的方法来做到这一点,但我没有找到优雅的方法。

任何帮助将不胜感激!

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

similar question

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

【问题讨论】:

  • 17 指的是 wwords 对我来说
  • @Clément - 从 0 开始计数
  • 你不能稍微修改your previous question的答案吗?为什么我没有看到你的任何尝试?
  • 这能回答你的问题吗? return element in list refering to index
  • 一点也不完全不同,调整你在那里接受的答案很简单。

标签: python string list numpy itertools


【解决方案1】:

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

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))

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-05
        • 2021-12-22
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        相关资源
        最近更新 更多