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]
添加回答
舉報