采用两个列表并输出列表之间相似性的程序

Program that takes two lists and outputs similarity between lists

我正在编写一个程序,用户在其中输入两个列表(数字)的数据,然后程序从两个列表中输出匹配的数字。 我已经编写了一些代码来手动实现这一点,但我需要实现一种用户可以自己输入数字而不是硬编码的方式。

请参阅以下所需输出:

List 1: 1 2 3 4
List 2: 4 2 0 0 
output: [4 , 2 ]

我的波纹管代码实现了预期的结果,但不是预期的结果,我的代码从列表中获取值并计算交集,并打印结果但与上面概述的不同。

a = [1,2,3,4]
b = [4,2,0,0]
c = set(a) & set(b)  
print('Output:',c)

能否请您帮忙解释一下这是如何实现的。谢谢

如果您需要保持列表中的顺序,您可以直接在列表上工作并使用简单的列表理解:

a = [1,2,3,4]
b = [4,2,0,0]    
c = [el for el in b if el in a]
print('Output:',c)

输出:

[4, 2]

编辑 1. 如果你想让用户一个一个地输入数字,你可以这样做:

n = int(input('Provide the amount of numbers for each list: '))

a = [int(input(f'List a, element {i+1}: ')) for i in range(n)]
b = [int(input(f'List b, element {i+1}: ')) for i in range(n)]
c = [el for el in b if el in a]
print('Output:',c)

对于更多变体,您可以将其用作基线并添加类型检查或可变长度数组(通过让用户输入两个初始数字 n 和 m)等。


编辑 2. 如果您希望用户直接输入列表,您可以这样做:

a = map(int, input('List 1: ').strip().split())  # e.g. "1 2 3 4"
b = map(int, input('List 2: ').strip().split())  # e.g. "4 2 0 0"
c = [el for el in b if el in a]
print('Output:',c)

我不推荐此解决方案,因为它更容易出现用户输入错误。