python - 如何编写列表理解来创建集合列表?

标签 python set list-comprehension

我尝试使用

创建集合列表 [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])]

但是,创建集合列表似乎有点愚蠢,其中每个集合都是递增序列的单个整数。无论您想完成什么,最好以不同的方式完成,请咨询 The XY Problem并确保您不会陷入其中。

根据您要实现的目标,可能有更好的方法来存储您的数据或执行您要执行的逻辑。

注意:

最初我写的是[set([i]) for i in range(5)] 但是在对不同的选项进行计时之后,我意识到将整数转换为单项列表比较浪费而不是将其转换为元组,所以我更改了答案,随后又将其更改为使用 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

关于python - 如何编写列表理解来创建集合列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20742936/

相关文章:

java - 是否可以将 Java 应用程序设置为默认文件打开器?

python - 以 pythonic 方式填充 2D numpy 数组

python - 我们是否应该始终用列表理解替换 for 循环

python - For 循环不会遍历所有对象

python - 训练循环迭代期间 Tensorflow 锯齿形内存使用情况

python - 使用 Tkinter 用户输入作为函数中的变量

Scala返回boolean与if else

java - 对于类似的实用方法,Set 和 Map 的不同覆盖率统计

python - 通过正则表达式修改字符串列表

python - 未实现错误: Layer ModuleWrapper has arguments in `__init__` and therefore must override `get_config`