emb*_*ert 1 python list-comprehension set
我试图创建的集列表[set([0]), set([1]), set([2]),..]使用
>>> [set(i) for i in range(9)]
Run Code Online (Sandbox Code Playgroud)
但它并不是很好
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
如何使用列表推导创建该列表?可能吗?
要[set([0]), set([1]), set([2]),..]使用列表推导创建,您将使用:
>>> [{i} for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
Run Code Online (Sandbox Code Playgroud)
除非您在2.7版之前使用任何版本的Python,否则请使用:
>>> [set((i,)) for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
Run Code Online (Sandbox Code Playgroud)
但是,创建一个集合列表似乎有点愚蠢,其中每个集合都是递增序列的单个整数.无论你想要完成什么,可能会以不同的方式做得更好,请参考XY问题,并确保你没有陷入这个问题.
根据您要完成的任务,可能有更好的方法来存储数据或执行您尝试执行的逻辑.
注意:
最初我写了[set([i]) for i in range(5)]但是在定时不同的选项之后,我意识到将整数转换为单项列表比将它转换为元组更浪费,所以我改变了我的答案,然后再次改变它以使用set literal,timing下面:
>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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |