其实我有两个问题:
>>>set([7, 10, 78, 96, 13, 42, 88, 7, 12, 16])
{96, 7, 10, 42, 12, 13, 78, 16, 88}
订单在转换过程中丢失。如何维持秩序
例如,如果代码类似:n = int(input())
,并且如果给定的输入只是<Enter>
,但下一行包含实际输入,那么如何等待直到获得有效输入
我的意思是,我想用{scanf("%d",&n);
那样编写代码,那么它将忽略所有空格并输入按键,并将获得实际输入。另外,还有另一个特性,比如获取类似scanf("%d:%d", &h, &m);
的时间,它实际上允许:
作为一个输入来分隔两个不同的输入
我尝试了两种不同的输入方式: 第一:
>>>n = int(input())
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
n = int(input())
ValueError: invalid literal for int() with base 10: ''
第二:
>>> from sys import stdin
>>> n = int(stdin.readline())
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
n = int(stdin.readline())
ValueError: invalid literal for int() with base 10: '\n'
唯一明显的区别是stdin
捕获返回键,而input()
仅将其捕获为空字符串。但是它们都没有实现上面解释的scanf()
函数。如何实现这一点
为了保持顺序,不能使用
set
对象,但可以使用frozenset
。冻结集只是Python集对象的不可变版本。 就是这样,对于您的第二个问题,我建议使用此代码。在给定整数之前,它不会从循环中断
string.strip()用于删除python字符串中的所有前导和尾随空格。不过,在没有string.strip()的情况下,它仍然可以工作。 但在给定整数之前,它不会考虑任何'\n'字符串值和循环
为了用“:”字符分隔输入,您可以简单地使用
string.split(":")
。它返回一个带分隔值的字符串希望这有帮助
集合没有顺序(或索引)。假设要将列表转换为集合以删除重复项(并将其转换回列表而不进行排序),请将列表转换为NumPy数组以删除重复项
相关问题 更多 >
编程相关推荐