首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一个集合中存储来自用户的多个输入

如何在一个集合中存储来自用户的多个输入
EN

Stack Overflow用户
提问于 2020-02-09 19:42:17
回答 3查看 421关注 0票数 4

我的目标是以一种无序的方式存储来自用户的许多输入。因此,我决定使用set。到目前为止,我拥有的代码是:

代码语言:javascript
运行
复制
a = input()
b = input()
c = input()
d = input()

all = a, b, c, d
print(set(all))

但是,我不想像上面那样重复几次input()。有没有办法做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2020-02-09 19:45:09

您可以将对input()的调用放在理解中:

代码语言:javascript
运行
复制
set(input() for i in range(4))
票数 9
EN

Stack Overflow用户

发布于 2020-02-09 19:45:11

如果你只想要一个set,你就不需要a, b, c, d了。

代码语言:javascript
运行
复制
all = set()   #or all = {*(),}
for _ in range(4):
    all.add(input())

print(all)

或,

代码语言:javascript
运行
复制
all = {input() for _ in range(4)}

这是考虑到您在新行中接受输入。否则,如果输入以逗号分隔,例如:

代码语言:javascript
运行
复制
all = set(input().split(','))
print(all)

代码语言:javascript
运行
复制
all = {*input().split(',')}
print(all)

如果您同时需要a, b, c, d和所有输入,您可以这样做:

代码语言:javascript
运行
复制
>>> 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 builint或关键字。另一点,如果你已经这样做了,为了获得所有的默认行为,你可以这样做:

代码语言:javascript
运行
复制
>>> import builtins
>>> all = builtins.all
# Or, more conveniently, as pointed out by @Martijn Pieters
>>> del all

  • *用于iterable unpacking
  • _用于don't carethrowawayanonymous variable,因为我们不需要在循环中使用变量。关于此here.
  • {*()}的更多信息只是创建空集的一种奇特方式,因为python没有空集文字。建议使用set()
票数 9
EN

Stack Overflow用户

发布于 2020-02-09 19:47:00

您可以使用for循环:

代码语言:javascript
运行
复制
all = set()
for _ in range(4):
  all.add(int(input())
print(all)

不要忘记,输入提供了一个字符串,所以如果需要的话,应该将它转换为int或任何类型。

for循环中的"_“表示此变量不重要。但你可以用任何你喜欢的名字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60136212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档