簡體   English   中英

如何編寫列表理解以創建集合列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM