Python-比较两个列表的值和长度

时间:2018-09-12 13:32:46

标签: python list

我有两个列表,list1list2。对于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))'是错误的,但它离我认为正确的地方很近。我不清楚如何“提取”符合条件的特定元素并将其添加到我的列表中。

任何帮助将不胜感激:)

2 个答案:

答案 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']