以下代码段采用两个参数,比较其中包含的值并打印任何匹配项。
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
的intersection
方法,您实际上不需要将参数转换为集合(好吧,那是一个除外)。
...的非运营商版本
set
...的方法将接受任何iterable作为参数。相反,他们的运营商基础的对应对象需要设置其参数。
所以您可以做类似的事情:
set