在一个教程中我已经读过,因为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
不是一组,那是什么?
答案 0 :(得分:3)
第一个变量set1
根据单个字符串set
中的字母序列创建一个新的"Letters"
。
第二个变量set2
创建一个set
个str
个对象。它不会迭代单个字母来制作一组。
答案 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']
>>>
所以这不应该令人惊讶。