首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建重复N次的单项列表

创建重复N次的单项列表
EN

Stack Overflow用户
提问于 2010-08-11 22:01:34
回答 6查看 719.2K关注 0票数 638

我想创建一系列不同长度的列表。每个列表将包含相同的元素e,重复的n次数(其中n =列表的长度)。

如何在不使用每个列表的列表理解[e for number in xrange(n)]的情况下创建列表?

EN

回答 6

Stack Overflow用户

发布于 2010-08-11 22:05:42

代码语言:javascript
复制
>>> [5] * 4
[5, 5, 5, 5]

当重复的项目是一个列表时,要小心。该列表将不会被克隆:所有元素都将引用同一列表!

代码语言:javascript
复制
>>> x=[5]
>>> y=[x] * 4
>>> y
[[5], [5], [5], [5]]
>>> y[0][0] = 6
>>> y
[[6], [6], [6], [6]]
票数 185
EN

Stack Overflow用户

发布于 2010-08-11 22:02:50

Itertools有一个专门用于此的函数:

代码语言:javascript
复制
import itertools
it = itertools.repeat(e,n)

当然,itertools给了你一个迭代器而不是一个列表。[e] * n为您提供了一个列表,但是,根据您将如何处理这些序列,itertools变体可能会更有效。

票数 28
EN

Stack Overflow用户

发布于 2015-01-28 01:53:33

正如其他人所指出的那样,对可变对象使用*运算符会复制引用,因此如果更改一个引用,则会将它们全部更改。如果想要创建可变对象的独立实例,xrange语法是最具Pythonic风格的方法。如果您对从未使用过的命名变量感到困扰,您可以使用匿名下划线变量。

代码语言:javascript
复制
[e for _ in xrange(n)]
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3459098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档