我的目标是以混乱的方式存储来自用户的许多输入。因此,我决定使用set
。到目前为止,我的代码是:
a = input()
b = input()
c = input()
d = input()
all = a, b, c, d
print(set(all))
但是,我不想像上面那样重复input()
几次。有没有办法做到这一点?
答案 0 :(得分:8)
您可以全面理解对input()的调用:
set(input() for i in range(4))
答案 1 :(得分:8)
如果您只需要一个set
,则不需要a, b, c, d
。
all = set() #or all = {*(),}
for _ in range(4):
all.add(input())
print(all)
或者,
all = {input() for _ in range(4)}
这是在考虑换行输入。否则,例如,如果输入用逗号分隔:
all = set(input().split(','))
print(all)
或
all = {*input().split(',')}
print(all)
如果您同时需要a, b, c, d
和所有输入,可以这样做:
>>> all = a, b, c, d = {*input().split(',')}
# example
>>> all = a, b, c, d = {1, 2, 3, 4}
>>> all
{1, 2, 3, 4}
>>> a
1
>>> b
2
@Tomerikoo指出all(iterable)
是built-in function,请避免将变量命名为与python builints或关键字相同。
还有一点,如果已经这样做,为了获得所有默认行为,可以执行以下操作:
>>> import builtins
>>> all = builtins.all
# Or, more conveniently, as pointed out by @Martijn Pieters
>>> del all
*
用于iterable unpacking
_
用于don't care
或throwaway
或anonymous variable
,
因为我们不需要循环中的变量。更多关于这个
here。{*(),}
只是创建空集的一种好方法,因为python没有空集文字。建议使用set()
答案 2 :(得分:2)
您可以使用for循环:
all = set()
for _ in range(4):
all.add(int(input())
print(all)
别忘了输入会为您提供一个字符串,因此,如果需要,您应该将其转换为int或任何类型。
for循环中的“ _”表示此变量并不重要。但是您可以随便输入任何名称。