带有整数的python集合将大于10的整数分成两位数

时间:2014-05-26 21:56:45

标签: python set

我试图在python中初始化一组集合。每个集合最初包含一个整数,表示图形中的编号顶点。

for x in graph:
    setList.append(set(x))
print setList

如果图形有10个顶点,它将打印出以下内容:

[set(['0']), set(['1']), set(['2']), set(['3']), set(['4']), set(['5']), set(['6']), set(['7']), set(['8']), set(['9']), set(['1', '0'])]

为什么10被分成1 0?

set(['1', '0'])

2 个答案:

答案 0 :(得分:4)

这些是字符串,而不是整数,字符串是序列。这意味着在它们上调用set()会在序列中创建一组每个元素 - 在字符串的情况下是单个字符。这应该解决你的问题:

for x in graph:
    setList.append(set([x]))
print setList

或者如果你想要整数:

for x in graph:
    setList.append(set([int(x)]))
print setList

这些工作因为现在x被包装在一个列表中,Python迭代该列表来填充集合,而不是试图迭代x本身(这会引发一个{{} 1}}如果TypeError实际上是一个整数,因为整数是不可迭代的。)

答案 1 :(得分:1)

你可以做到

setList.append({x})

示例:

>>> set('10')
{'1', '0'}
>>> a={'10'}
>>> a
{'10'}