我想迭代某个范围并创建几个仅包含当前i的集合。 (在代码中我不想为每个i做这个,但它是关于一般原则的。)
for i in range(5):
s=set(i)
print(s)
它说int对象不可迭代。为什么这不起作用?请保持答案简单,我是新手。
答案 0 :(得分:1)
设置构造函数set(x)
需要x
作为某个容器,如列表或其他集合。你传递一个整数,python尝试迭代它,然后失败。
为了做到这一点,你需要传递一个x的单例,如:
for i in range(5):
s = set([i]) # or s = set((i,))
print(s)
或通过简化的集合构造函数
for i in range(5):
s = {i}
print(s)
或构造一个空集并添加你的元素
for i in range(5):
s = set()
s.add(i)
print(s)
答案 1 :(得分:1)
set()
需要添加序列值,而单个整数不是序列。
您可以将其包装在元组或列表中:
s = set((i,))
s = set([i])
但更好的选择是使用{..}
集合文字表示法:
s = {i}
符号看起来很像创建字典,但您只列出值,而不是键。
演示(在Python 2上,表示使用set([..])
表示法):
>>> i = 42
>>> set((i,))
set([42])
>>> set([i])
set([42])
>>> {i}
set([42])
Python 3使用文字符号反映集合:
>>> i = 42
>>> {i}
{42}
答案 2 :(得分:0)
而不是在范围内使用for循环,您也可以将其提供给set(如果您不需要更改它的内容,则将其提供给冻结集):
>>> set(range(5))
# {0, 1, 2, 3, 4}