Python设置异常

时间:2018-07-16 16:43:43

标签: python python-3.x python-2.7

当我尝试从列表中获取值时,我试图了解集合是如何工作的。 所以当我在底部运行代码

wordlist = ['hello',1,2,3]
wordSet = set(wordlist)

输出为

{3, 1, 2, 'hello'}

或类似的东西,因为set没有顺序。 但是我的意思是,当我尝试到达列表的第一个元素时,例如在使用myList [0]的值来创建集合时使用

wordlist = ['hello',1,2,3]
wordSet = set(wordlist[0])

我期望输出是

{'hello'}

但是我得到了

{'l', 'o', 'h', 'e'}

或随机样式之一。 我的意思是,当我将列表直接放在set函数中时,它将使用整个列表来创建一个集,但是当我想仅使用列表中的第一个元素来创建一个集时,它将字符串分成多个字符。 为什么会这样?

2 个答案:

答案 0 :(得分:3)

诸如'hello'之类的字符串是可迭代的; set()将可迭代项转换为集合。

为了澄清,

set(('1', '1', '2', '3')) == {'1', '2', '3'}
set(['1', '1', '2', '3']) == {'1', '2', '3'}
set('1123') == {'1', '2', '3'}

答案 1 :(得分:2)

在对象上调用set将迭代该对象。字符串是可迭代的,产生单个字符。如果您想要一个仅包含wordlist的第一个元素的集合,则需要使用仅包含该元素的iterable:

set([worldlist[0]])

或者,更直接地,只需使用花括号:

{worldlist[0]}