迭代并比较 Python 中的未知输入量

Iterate and compare unknown amount of input in Python

以下代码片段采用两个参数,比较其中包含的值并打印所有匹配项。

from sys import argv

print(set(argv[1]) & set(argv[2]))
#Output: python multicompare.py man fan
#{'n', 'a'}

如何调整它来处理未知且可能无限(或非常大)的参数?我尝试遍历参数并将它们传递给函数,但没有已知数量的参数,我如何针对它们调用 set() 并引用它们? 预期结果:

#Output: python3 multicompare.py man fan dan tan han
# {'n', 'a'}
#Output: python3 multicompare.py man fan dan can fin tin mountain happen trappen
# {'n'} 

您可以遍历 sys.argv 并使用 &= 运算符。如果你用参数调用它 man fan dan can fin tin mountain happen trappen:

import sys

s = set(sys.argv[1])

for a in sys.argv[2:]:
    s &= set(a)

print(s)

然后打印:

{'n'}

使用 intersection method of sets,您实际上不需要将参数转换为集合(嗯,除了一个)。

the non-operator version[s] of ... intersection() ... method[s] will accept any iterable as an argument. In contrast, their operator based counterparts require their arguments to be sets.

所以你可以这样做:

import sys

print(set(sys.argv[1]).intersection(*sys.argv[2:]))