Py学习  »  Python

有没有一种更快的方法来生成包含相同元素的python列表?[复制品]

singularli • 5 年前 • 1525 次点击  

这个问题已经有了答案:

这段代码生成一个由9个组成的列表。

>>> [1 for i in range(9)]
[1, 1, 1, 1, 1, 1, 1, 1, 1]

有没有比这更快的方法?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/45458
 
1525 次点击  
文章 [ 2 ]  |  最新文章 5 年前
jsbueno
Reply   •   1 楼
jsbueno    5 年前

你可以创建一个对象,它有一个无限的或者一组定义好的元素,而这并不取决于你想要的元素的数量。

因此,虽然9个一组的速度不一定比创建一个列表“快”,但几百个一组的速度肯定更快,1000万或10亿个一组的速度明显更快:

class Ones:
    def __init__(self, element=1, size=9):
         self.element = element
         self.size = size
    def __getitem__(self, index):
         return self.element
    def __len__(self):
         return self.size

另外,如果只需要在重复的元素上迭代一个元素,而不需要在任意索引处获得一个元素,则可以使用 itertools.repeat :

import itertools
ones = itertools.repeat(1, size=9)
MrGeek
Reply   •   2 楼
MrGeek    5 年前

更快一点( based on this post )使用列表乘法要短得多:

>>> [1] * 9
[1, 1, 1, 1, 1, 1, 1, 1, 1]