![](/img/trans.png)
[英]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.