如何使用Python中的循环比较不同脚本中不同大小的多个列表

时间:2018-03-29 15:14:59

标签: python loops scripting

我在脚本1中有一个列表

x = [apple,orange,banana,kiwi] 

在脚本2中我有很多列表

a = [carrot,apple,celery,banana] 
b = [tomato, kiwi] 
c = [banana, pineapple, strawberry, avocado] 
d = [dragon fruit, lettuce, orange] 

我试图找出一个可以使用的循环,它将列表x与每个单独的列表进行比较,然后创建一个具有相似性的新列表。真实文件将有超过100个列表,而不是4。

list_one = [apple,banana] 
list_two = [kiwi] 
list_three = [banana] 
list_four = [orange] 

2 个答案:

答案 0 :(得分:3)

set实际上就是您所需要的。您可以将列表中间转换为集合,然后将其转换回如下列表:

x = ['apple','orange','banana','kiwi']

a = ['carrot','apple','celery','banana']
b = ['tomato', 'kiwi']
c = ['banana', 'pineapple', 'strawberry', 'avocado']
d = ['dragon fruit', 'lettuce', 'orange']

result_lists = []
for reference in (a,b,c,d):
    result_lists.append(list(set(x).intersection(set(reference))))

print(result_lists)
>>> [['apple', 'banana'], ['kiwi'], ['banana'], ['orange']]

答案 1 :(得分:2)

您可以使用单行完成此操作:

out = [[j for j in i if j in x] for i in [a, b, c, d]]

收率:

[['apple', 'banana'], ['kiwi'], ['banana'], ['orange']]