社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

singularli • 5 年前 • 2063 次点击  

这个问题已经有了答案:

这段代码生成一个由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
 
2063 次点击  
文章 [ 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]