Python:改进的集合表示法?

时间:2017-08-17 19:01:01

标签: python set

在一个教程中我已经读过,因为Python 2.6的定义如下:

a_set = {"Members", "of", "set"}

但是,我想说我希望用这种符号来实现a_set = set("Letters")。打印时a_set = {"Letters"}不会呈现相同的输出:

>>> set1 = set("Letters")
>>> set2 = {"Letters"}
>>> print(set1, set2)
{'L', 'r', 't', 'e', 's'} {'Letters'}

教程错了吗?这里发生了什么?如果set2不是一组,那是什么?

3 个答案:

答案 0 :(得分:3)

第一个变量set1根据单个字符串set中的字母序列创建一个新的"Letters"

第二个变量set2创建一个setstr个对象。它不会迭代单个字母来制作一组。

答案 1 :(得分:2)

因为在第一组中你传递了一个iterable。将它传递到这样的列表中,它会给你你想要的东西。

In [148]: set(["Letters"])
Out[148]: {'Letters'}

答案 2 :(得分:2)

您从根本上将文字符号与构造函数混淆。所有内置容器的构造函数都使用 iterables 并使用iterable的元素填充容器。容器文字不能以这种方式工作,并且没有设计为以这种方式工作。注意,这是它适用于每个支持文字符号的内置容器类型的方式:

>>> list('letters')
['l', 'e', 't', 't', 'e', 'r', 's']
>>> ['letters']
['letters']
>>>

所以这不应该令人惊讶。