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

问题描述 投票:2回答:2

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

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'} 

python recursion set arguments argv
2个回答
2
投票

您可以遍历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'}

0
投票

使用intersectionintersection方法,您实际上不需要将参数转换为集合(好吧,那是一个除外)。

...的非运营商版本set ...的方法将接受任何iterable作为参数。相反,他们的运营商基础的对应对象需要设置其参数。

所以您可以做类似的事情:

set
© www.soinside.com 2019 - 2024. All rights reserved.