[英]Remove elements from list in python based on multiple conditions
我有傻瓜。 在python中列出:
list_vals = ['primf_to_primf', 'primf_to_primn', 'primf_to_secdf', 'primf_to_secdn', 'primf_to_urban', 'primf_to_c3ann', 'primf_to_c4ann', 'primf_to_c3per', 'primf_to_c4per', 'primf_to_c3nfx', 'primf_to_pastr', 'primf_to_range', 'primn_to_primf', 'primn_to_primn', 'primn_to_secdf', 'primn_to_secdn', 'primn_to_urban', 'primn_to_c3ann', 'primn_to_c4ann', 'primn_to_c3per', 'primn_to_c4per', 'primn_to_c3nfx', 'primn_to_pastr', 'primn_to_range', 'secdf_to_primf', 'secdf_to_primn', 'secdf_to_secdf', 'secdf_to_secdn', 'secdf_to_urban', 'secdf_to_c3ann', 'secdf_to_c4ann', 'secdf_to_c3per', 'secdf_to_c4per', 'secdf_to_c3nfx', 'secdf_to_pastr', 'secdf_to_range', 'secdn_to_primf', 'secdn_to_primn', 'secdn_to_secdf', 'secdn_to_secdn', 'secdn_to_urban', 'secdn_to_c3ann', 'secdn_to_c4ann', 'secdn_to_c3per', 'secdn_to_c4per', 'secdn_to_c3nfx', 'secdn_to_pastr', 'secdn_to_range', 'urban_to_primf', 'urban_to_primn', 'urban_to_secdf', 'urban_to_secdn', 'urban_to_urban', 'urban_to_c3ann', 'urban_to_c4ann', 'urban_to_c3per', 'urban_to_c4per', 'urban_to_c3nfx', 'urban_to_pastr', 'urban_to_range', 'c3ann_to_primf', 'c3ann_to_primn', 'c3ann_to_secdf', 'c3ann_to_secdn', 'c3ann_to_urban', 'c3ann_to_c3ann', 'c3ann_to_c4ann', 'c3ann_to_c3per', 'c3ann_to_c4per', 'c3ann_to_c3nfx', 'c3ann_to_pastr', 'c3ann_to_range', 'c4ann_to_primf', 'c4ann_to_primn', 'c4ann_to_secdf', 'c4ann_to_secdn', 'c4ann_to_urban', 'c4ann_to_c3ann', 'c4ann_to_c4ann', 'c4ann_to_c3per', 'c4ann_to_c4per', 'c4ann_to_c3nfx', 'c4ann_to_pastr', 'c4ann_to_range', 'c3per_to_primf', 'c3per_to_primn', 'c3per_to_secdf', 'c3per_to_secdn', 'c3per_to_urban', 'c3per_to_c3ann', 'c3per_to_c4ann', 'c3per_to_c3per', 'c3per_to_c4per', 'c3per_to_c3nfx', 'c3per_to_pastr', 'c3per_to_range', 'c4per_to_primf', 'c4per_to_primn', 'c4per_to_secdf', 'c4per_to_secdn', 'c4per_to_urban', 'c4per_to_c3ann', 'c4per_to_c4ann', 'c4per_to_c3per', 'c4per_to_c4per', 'c4per_to_c3nfx', 'c4per_to_pastr', 'c4per_to_range', 'c3nfx_to_primf', 'c3nfx_to_primn', 'c3nfx_to_secdf', 'c3nfx_to_secdn', 'c3nfx_to_urban', 'c3nfx_to_c3ann', 'c3nfx_to_c4ann', 'c3nfx_to_c3per', 'c3nfx_to_c4per', 'c3nfx_to_c3nfx', 'c3nfx_to_pastr', 'c3nfx_to_range', 'pastr_to_primf', 'pastr_to_primn', 'pastr_to_secdf', 'pastr_to_secdn', 'pastr_to_urban', 'pastr_to_c3ann', 'pastr_to_c4ann', 'pastr_to_c3per', 'pastr_to_c4per', 'pastr_to_c3nfx', 'pastr_to_pastr', 'pastr_to_range', 'range_to_primf', 'range_to_primn', 'range_to_secdf', 'range_to_secdn', 'range_to_urban', 'range_to_c3ann', 'range_to_c4ann', 'range_to_c3per', 'range_to_c4per', 'range_to_c3nfx', 'range_to_pastr', 'range_to_range']
我想删除具有5个foll中任何一个的元素。 元素: c3ann c4ann c3per c4per c3nfx
y = [s for s in x if 'c3ann' not in list_vals]
如何改善上述方法?
您可以使用正则表达式:
import re
y = [item for item in list_vals if not re.search(r'c\d(ann|per|nfx)', item)]
我不知道您想提高什么..速度,易读性等
也许您想要这样的东西:
res = filter(lambda word: 'c3ann' not in word, list_vals)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.