[英]Modifying each element in list and then all elements in list with a funtion
[英]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 )
這具有一個優點,您無需在所有列表項字符串中對列表名稱進行硬編碼,我假設您現在正在這樣做。
>>> [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.