本文介绍了列表理解以按元素值重复列表中的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不太清楚执行此操作的代码,有类似的帖子:重复列表理解中的元素

I can't quite figure out the code to do this, there are similar posts: Repeating elements in list comprehension

但是我想用列表中的值重复列表中的一个值

but I want to repeat a value in the list by the value in the list

In [219]:

l = [3,1]

[i for x in range(i) for i in l]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-219-84d6f25dfd96> in <module>()
      1 l = [3,1]
      2
----> 3 [i for x in range(i) for i in l]

TypeError: 'tuple' object cannot be interpreted as an integer

我想要的是这样的列表:

What I want is a list like so:

[3,3,3,1]

也可以有人解释这个错误.

Also can someone explain the error.

请注意,我在这里运行python 3.3

Note I am running python 3.3 here

推荐答案

[x for x in l for _ in range(x)]
# Out[5]: [3, 3, 3, 1]

但是我更喜欢itertools中更详细,更直截了当的(文字)函数:

But I prefer more verbose, yet more straigforward (literal) functions from itertools:

from itertools import chain, repeat
list(chain.from_iterable(repeat(x, x) for x in l))

这篇关于列表理解以按元素值重复列表中的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-04 23:03