我有两个列表,list1
和list2
。对于list1
中的每个值,我需要在list2
中找到满足以下两个条件的元素:
list1
元素必须是任何list2
元素的子字符串(例如list1
中的'ABC'是list2
中的'ABCDE'的子字符串)
list1
元素的长度必须短于list2
元素的长度(“ ABC”短于“ ABCDE”)。
然后,我想将list2
中的任何限定元素传递给单独的list3
。我很难解决语法来实现这一点。
这是我到目前为止尝试过的:
for elem in list1:
if elem in list2 and len(elem) < len(range(list2)):
list3.append(list2)
我意识到'len(range(list2))
'是错误的,但它离我认为正确的地方很近。我不清楚如何“提取”符合条件的特定元素并将其添加到我的列表中。
任何帮助将不胜感激:)
答案 0 :(得分:1)
您可以使用列表理解:
list3 = [i for i in list1 if any(i in j and len(i) < len(j) for j in list2)]
例如,如果:
list1 = ['ABC', 'BCD', 'ABCDE', 'DEF']
list2 = ['ABCDE', 'XYZ']
然后使用上面的代码,list3
将变为:
['ABC', 'BCD']
答案 1 :(得分:0)
list1 = ["ABC", "CD", "XX", "AA", "GG"]
list2 = ["BABCD", "CC", "XY", "AAA", "GG"]
list3 = []
for item in list1:
for other_item in list2:
if item in other_item and len(item) < len(other_item):
list3.append(item)
输出:
>>> list3
['ABC', 'CD', 'AA']