首页 > 解决方案 > 获取包含给定子字符串的所有元素的索引

问题描述

我正在尝试获取与 中的某个条件匹配的所有元素的索引my_list

my_list = ['This is chapter 1', 'chapter 2 is here', 'Baseball Sport', 'Football Sport', 'chapter 13']

我想获取my_list包含字符串的元素的所有索引'chapter'。我已经尝试过列表推导,但我还是新手,所以没有成功。

search = 'Chapter'

for k in range(len(my_list)):
    search_list = [i for i, search in enumerate(my_list)
                   if search.lower() in my_list[k]]

我可能在这里犯了一些无法识别的错误。我怎样才能得到我想要的指数结果?

search_list = [0, 1, 4]

标签: pythonlist

解决方案


主要问题是您search在列表理解中重新定义并且正在使用它的新定义。你想要的是这样的:

my_list = ['This is chapter 1', 'chapter 2 is here', 'Baseball Sport', 'Football Sport', 'chapter 13']
search = 'chapter'
results = [i for i, item in enumerate(my_list) if search in item]

旁注:

  1. 如果您有能力定义自己,那么将其定义为并每次都调用它search是没有意义的。从一开始就将其定义为。"Chapter".lower()"chapter"
  2. 列表推导取代了显式的 for 循环。在这种情况下,两者兼有是错误的。您只需要在列表上循环一次。
  3. enumerate用于避免索引 ( my_list[k])。您在这里使用是正确的enumerate;所以使用它。

推荐阅读