簡體   English   中英

根據元素的關鍵字修改列表元素

[英]Modifying list elements based on key word of the element

我有很多列表,希望對某些特定元素進行一些操作。 所以,如果我有這樣的事情:

list1 = ['list1_itemA', 'list1_itemB', 'list1_itemC', 'list1_itemD']
list2 = ['list2_itemA', 'list2_itemC','list2_itemB']

我感興趣的是項目'itemC'出現在所有列表中的任何地方,我需要隔離一個包含itemC的元素,以便對其進行后續操作。 我考慮過以listC占據第一個索引的方式對列表進行排序,這可以通過list [0]方法實現。

但是在我的情況下,itemA,itemB,itemC和itemD是生物物種名稱,我不知道如何強制列表元素占據第一個索引(在我的分析中,該元素將帶有特定字符串,例如“ cow”或“ itemC”) 。 Python可以做到嗎?

您可以使用“生成器表達式”提取包含"itemC"項目,而無需排序或擔心有多少個項目:

itemCs = []
for lst in (list1, list2):
    itemCs.extend(item for item in lst if "itemC" in item)

這給出itemCs == ['list1_itemC', 'list2_itemC']

如果您嘗試使用文本中包含的特定字符串保存列表,則可以使用:

parse_lists = [ list1, list2, list3 ]
matching_lists = []
search_str = "itemC"
for thisList in parse_list:
    if any( search_str in item for item in thisList ):
        matching_lists.append( thisList )

這具有一個優點,您無需在所有列表項字符串中對列表名稱進行硬編碼,我假設您現在正在這樣做。

同樣值得注意的是,更改matching_lists元素也會更改原始(引用)列表。 你可以看到這個這個的清晰度。

>>> [x for y in [list1, list2] for x in y if "itemC" in x]  
['list1_itemC', 'list2_itemC']

要么

>>> [x for y in [list1, list2] for x in y if any(search_term in x for search_term in ["itemC"])]  
['list1_itemC', 'list2_itemC']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM