快速提问,我正在用 Python 编写一个小程序,并正在寻找一种方法来制定一个条件,如果该输入具有我想要的相同 len,则只允许输入 4 个数字,并确保所有数字在它是独一无二的。
在网上搜索了一下后,我发现有几个人给出了相同的解决方案,在我的例子中是 len(set(input)) == size
(我的号码的大小)。
它工作得很好,但我不明白它到底是如何工作的,我想知道。
我也尝试从中删除 len
并且它仍然有效,所以我不知道这段小代码中每件事的影响是什么。
因此,即使它允许我创建一个条件来确保 4 个数字中的每一个都是唯一的,但如果有人能向我解释它是如何工作的,我会很高兴。
提前致谢。
PS:如果有人想知道这是什么,我正在通过制作我自己的 Cows & Bulls 版本来练习。因此,给定一个使用 random.sample 的随机数,用户然后必须尝试猜测该数字是什么。我提到的条件是根据用户的输入使用的。
最佳答案
A set
是一个数据结构:
constructing and manipulating unordered collections of unique elements.
这些集合也必须可散列。但我们很幸运:字符串和字符是可哈希的。
要点是,如果我们构造一个集合形式 set(['1','4','1','5','2'])
,它将构造一个独特 元素的集合。所以在这里加两次'1'
,没有任何区别,结果是set(['1', '4', '5', '2'])
(或更方便地编写 {'1', '4', '5', '2'}
)。使用 len(..)
我们可以获得集合的大小。所以该集合的大小是输入的唯一字符数。
所以如果我们写 len(set(some_string))
我们会首先把一个字符串变成一个集合。这是可能的,因为字符串是字符的可迭代。所以 Python 将字符串视为有序的字符集合。 'abc'
,是'a'
、'b'
和'c'
的集合。所以每个数字都被视为一个元素并添加到集合中。
但是第二次添加相同的数字,没有任何效果。所以这意味着我们最终得到一个每个数字都被添加一次的集合。通过计算 len(..)
,我们获得了unique 数字的数量。然后我们可以将该数字与给定数字进行比较。
关于python - len(set()) 的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084973/