迭代并比较 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 set
s,您实际上不需要将参数转换为集合(嗯,除了一个)。
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:]))
以下代码片段采用两个参数,比较其中包含的值并打印所有匹配项。
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 set
s,您实际上不需要将参数转换为集合(嗯,除了一个)。
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:]))