[英]match element of a list based on another list in python where elements of one list is the substring of elements of another list
listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf', 'abcd755_mnopqr_20160110_164562.frf' ]
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
我有列表A和列表B。列表A有時可能缺少一個或兩個元素。 基於此,我需要通過保持相同順序在列表B中創建元素包含列表C。
我一直找不到解決方案。
您可以執行以下操作:
listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf']
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
listC = []
for b in listB:
if any(a.startswith(b) for a in listA):
listC.append(b)
print listC
輸出['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_']
您沒有指定是否要讓listB中的元素存在於listA中,或者是否不在listA中,因此,如果要使用其他方法,請在any
元素之前添加一個not
。
這是一個簡單的二次方解決方案,如果您有很多元素,則需要更有效的方法
使用listcomp可以說:
listC = [b for b in listB if any(b in a for a in listA)]
對於
listA = ['abcd754_efgh_20160110_165623.frf', 'abcd754_efghijk_20160110_162419.frf', 'abcd755_mno_20160110_165287.frf']
listB = ['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_', 'abcd755_mnopqr_']
此打印
['abcd754_efgh', 'abcd754_efghijk_', 'abcd755_mno_']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.