python - len(set()) 的解释

标签 python

快速提问,我正在用 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/

相关文章:

python - 将 cv2 图像转换为 PySDL2 表面以传输到屏幕

python - Apt 包未反射(reflect)在 Pyenv 中

python - 未包装的标签仍然存在

python - 方法与属性哪个更快?

Python None 变量用法

python - TypeError : first argument must be an iterable of pandas objects, 你传递了一个类型为 "DataFrame"的对象

python - 如何使用 pandas DataFrame 的值作为 numpy 数组索引

python - 将 xargs 用于并行 Python 脚本

php - 大数据集统计分析待发布网络

python - Python 2.7 中 set 与 frozenset 占用的内存