为何用大括号实例化集合保留字符串,而set()函数会拆分字符串?
集合两种创建方式的差异解析
这两种写法的核心区别在于集合的创建逻辑完全不同:
1. 大括号{}直接创建集合
大括号里的每一项(逗号分隔)都是集合的独立成员。当你写{'foo'}时,括号内只有一个元素——完整的字符串'foo',所以集合自然会保留这个完整字符串作为唯一成员。
比如如果写{'foo', 'bar'},集合里就会有两个独立的字符串元素,逻辑完全一致。
2. set()构造函数创建集合
set()的参数要求是一个可迭代对象(比如字符串、列表、元组等),它的工作逻辑是:遍历这个可迭代对象的每一个子元素,把这些子元素作为集合的成员。
而字符串本身就是可迭代对象,遍历'foo'时会逐个取出字符'f'、'o'、'o',再加上集合自动去重的特性,最终就得到了{'f', 'o'}。
如果想通过set()创建包含完整'foo'的集合,需要把字符串放到一个可迭代容器里,比如:
>>> x = set(['foo']) >>> print(x) {'foo'}
或者用元组:
>>> x = set(('foo',)) >>> print(x) {'foo'}
内容的提问来源于stack exchange,提问作者NaiveBae
相关产品推荐
相关产品推荐

