我试图在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'])
答案 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'}