Python 如何编写列表以创建集合列表?

Python 如何编写列表以创建集合列表?,python,set,list-comprehension,Python,Set,List Comprehension,我尝试使用创建集合[set[0]、集合[1]、集合[2]、…]的列表 但结果并不理想 Traceback (most recent call last): File "<interactive input>", line 1, in <module> TypeError: 'int' object is not iterable 如何创建具有列表理解的列表?是否可能?创建[set[0]、set[1]、set[2]、…]并使用以下列表: >>> [{

我尝试使用创建集合[set[0]、集合[1]、集合[2]、…]的列表

但结果并不理想

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not iterable
如何创建具有列表理解的列表?是否可能?

创建[set[0]、set[1]、set[2]、…]并使用以下列表:

>>> [{i} for i in range(5)] 
[set([0]), set([1]), set([2]), set([3]), set([4])]
除非您使用的是2.7版之前的任何Python版本,否则请使用:

>>> [set((i,)) for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
然而,创建一个集合列表,其中每个集合都是递增序列的单个整数,这似乎有点愚蠢。无论你想完成什么,最好用另一种方式来完成,请咨询并确保你没有陷入这种情况

根据您试图完成的任务,可能有更好的方法来存储数据或执行您试图执行的逻辑

注:

最初我编写了[set[I]for I in range5],但在对不同选项进行计时后,我意识到将整数转换为单个项列表比将其转换为元组更浪费,因此我更改了答案,随后再次更改为使用set-literal,计时如下:

>python -mtimeit "[{i} for i in range(5)]"
1000000 loops, best of 3: 0.853 usec per loop

>python -mtimeit "[set((i,)) for i in range(5)]"
1000000 loops, best of 3: 1.64 usec per loop

>python -mtimeit "[set([i]) for i in range(5)]"
1000000 loops, best of 3: 1.87 usec per loop
要使用列表创建[set[0]、set[1]、set[2]、…]:

>>> [{i} for i in range(5)] 
[set([0]), set([1]), set([2]), set([3]), set([4])]
除非您使用的是2.7版之前的任何Python版本,否则请使用:

>>> [set((i,)) for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
然而,创建一个集合列表,其中每个集合都是递增序列的单个整数,这似乎有点愚蠢。无论你想完成什么,最好用另一种方式来完成,请咨询并确保你没有陷入这种情况

根据您试图完成的任务,可能有更好的方法来存储数据或执行您试图执行的逻辑

注:

最初我编写了[set[I]for I in range5],但在对不同选项进行计时后,我意识到将整数转换为单个项列表比将其转换为元组更浪费,因此我更改了答案,随后再次更改为使用set-literal,计时如下:

>python -mtimeit "[{i} for i in range(5)]"
1000000 loops, best of 3: 0.853 usec per loop

>python -mtimeit "[set((i,)) for i in range(5)]"
1000000 loops, best of 3: 1.64 usec per loop

>python -mtimeit "[set([i]) for i in range(5)]"
1000000 loops, best of 3: 1.87 usec per loop

seti与set[0]不同。你能看到区别吗?我能问你为什么要创建一个只有一个元素的集合列表,只是为了练习列表理解,还是你有用例?@yopy:我用这个来构建实现的子树。初始化将创建包含一个元素的集合的n个子树。有更好的方法吗?seti不像set[0]。你能看到区别吗?我能问你为什么要创建一个只有一个元素的集合列表,只是为了练习列表理解,还是你有用例?@yopy:我用这个来构建实现的子树。初始化将创建包含一个元素的集合的n个子树。有更好的方法吗?除非OP使用的是非常旧的Python,[{i}for i in Range 5]也应该可以工作。[{i}for i in Range 5]我会接受的,谢谢你关于XY问题的建议,除非OP使用的是非常旧的Python,[{i}for i in Range 5]也应该可以工作。[{i}for i in Range 5]我会接受的谢谢你关于XY问题的建议