4 回答
TA贡献1799条经验 获得超6个赞
主要问题是您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]
旁注:
如果你有能力定义自己,那么定义它并每次调用它
search
是没有意义的。从一开始就将其定义为instead。"Chapter"
.lower()
"chapter"
列表推导式取代了显式的 for 循环。在这种情况下,两者都是错误的。您只需要在列表上循环一次。
enumerate
用于避免索引 (my_list[k]
)。你在这里使用是正确的enumerate
;所以使用它。
TA贡献1744条经验 获得超4个赞
你可以这样做
my_list = ['This is chapter 1', 'chapter 2 is here', 'Baseball Sport', 'Football Sport', 'chapter 13']
search = "chapter"
search_list = [index for index, val in enumerate(my_list) if search in val]
这给出了输出
[0, 1, 4]
这是您想要的输出恕我直言。我希望它有所帮助 :)
TA贡献1806条经验 获得超5个赞
你可以这样做:
my_list = ['This is chapter 1', 'chapter 2 is here', 'Baseball Sport', 'Football Sport', 'chapter 13']
search = 'Chapter'
search_list = []
for i, k in enumerate(my_list):
if search.lower() in k:
search_list.append(i)
print(search_list)
TA贡献1765条经验 获得超5个赞
我会这样做:
my_list = ['This is chapter 1', 'chapter 2 is here', 'Baseball Sport', 'Football Sport', 'chapter 13']
search = 'Chapter'
search_list = [i for i, str_to_search in enumerate(my_list) if search.lower() in str_to_search]
添加回答
举报