要與列表理解創建[set([0]), set([1]), set([2]),..]
你可以使用:
>>> [{i} for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
除非你使用任何版本的Python 2.7之前的版本,然後使用:
>>> [set((i,)) for i in range(5)]
[set([0]), set([1]), set([2]), set([3]), set([4])]
然而,似乎有種愚蠢的是,你正在創建一個集合列表,其中每個集合是一個遞增序列的單個整數。無論你試圖完成什麼,都可能以更好的方式完成,請參考The XY Problem,並確保你不會陷入這個問題。
根據您要完成的內容,可能有更好的方法來存儲您的數據或執行您嘗試執行的邏輯。
注:
本來我寫[set([i]) for i in range(5)]
但定時不同的選項之後,我意識到整數轉換成一個單一的項目列表是比它轉換成一個元組更浪費,所以我改變了我的答案,然後再次更改它以使用設置的文字,時間如下:
>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(i)'不像'set([0])'。你能看到區別麼? –
我可以問你爲什麼試圖創建有一個元素的集合列表,只是爲了練習列表理解或你已經使用的情況下? –
@yopy:我正在使用它來爲[Kruskal最小生成樹](http://en.wikipedia.org/wiki/Kruskal%27s_algorithm)的實現構建子樹。初始化創建包含一個元素的n個子樹(集合)。有沒有更好的辦法? – embert