我想创建一系列长度各不相同的列表。每个列表将包含相同的元素 e
,重复 n
次(其中 n
= 列表的长度)。
如何在不对每个列表使用列表理解 [e for number in xrange(n)]
的情况下创建列表?
原文由 chimeracoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想创建一系列长度各不相同的列表。每个列表将包含相同的元素 e
,重复 n
次(其中 n
= 列表的长度)。
如何在不对每个列表使用列表理解 [e for number in xrange(n)]
的情况下创建列表?
原文由 chimeracoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答863 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
你也可以这样写:
您应该注意,如果 e 是一个空列表,您会得到一个包含 n 个对同一列表的引用的列表,而不是 n 个独立的空列表。
性能测试
乍一看,repeat 似乎 是创建具有 n 个相同元素的列表的最快方法:
但是等等——这不是一个公平的测试……
函数
itertools.repeat
实际上并没有创建列表,它只是创建了一个对象,如果你愿意,它可以用来创建列表!让我们再试一次,但转换为列表:因此,如果您想要一个列表,请使用
[e] * n
。如果您想延迟生成元素,请使用repeat
。