[英]How can I write a list comprehension to create a list of sets?
我嘗試使用以下方法創建一組列表: [set([0]), set([1]), set([2]),..]
>>> [set(i) for i in range(9)]
但是效果不好
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])]
但是,創建一個集合列表似乎很愚蠢,其中每個集合都是遞增序列的單個整數。 無論您想完成什么,最好以其他方式完成,請查閱XY問題 ,並確保您不陷入該問題。
根據您要完成的工作,可能會有更好的方法來存儲數據或執行要執行的邏輯。
注意:
最初,我[set([i]) for i in range(5)]
編寫了[set([i]) for i in range(5)]
但是在計時了不同的選項之后,我意識到將整數轉換為單項列表比將其轉換為元組更浪費,因此我更改了我的答案,然后再次將其更改為使用設置的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.