在Python中创建具有重复值的整数列表

时间:2015-07-31 10:08:10

标签: python list python-2.7 integer

对于Python 2.7专家(或发烧友)而言,这个问题无疑是一块蛋糕,所以在这里。

如何创建一个整数列表,其值旁边是重复的原始值?

a = list([0, 0, 1, 1, 2, 2, 3, 3, 4, 4])

这样做真的很容易:

for i in range(10): a.append(int(i / 2))

但我宁愿在一个简单的行中开始a = 所需的输出。

感谢您抽出宝贵时间回答。

PS。没有任何可能已经有你的答案的问题是我正在寻找的。

7 个答案:

答案 0 :(得分:11)

>>> [i//2 for i in xrange(10)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]

一种简单的通用方法:

>>> f = lambda rep, src: reduce(lambda l, e: l+rep*[e], src, [])
>>> f(2, xrange(5))
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
>>> f(3, ['a', 'b'])
['a', 'a', 'a', 'b', 'b', 'b']

答案 1 :(得分:2)

var parameters = [Parameter.categoryId:"4bf58dd8d48988d1c8941735"]
currentTask = session.venues.search(parameters) {

答案 2 :(得分:2)

这是一种适用于任何列表的技术,而不仅仅是int列表,并且不依赖于(相对)昂贵的sorted()函数。它还允许您指定重复次数。

首先,一个简单的版本来解决OP中的问题:

print [u for v in [[i,i] for i in range(5)] for u in v]

<强>输出

[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]

现在是花哨的(但稍微更具可读性)版本。

a = list('abcde')
rep = 3
print [item for sublist in [rep * [i] for i in a] for item in sublist]

<强>输出

['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'e', 'e', 'e']

这是上一个示例的扩展版本,使用简单的for循环编写而不是嵌套列表推导。

b = []
for sublist in [rep * [i] for i in a]:
    for item in sublist:
        b.append(item)
print b

答案 3 :(得分:1)

Accounts.onCreateUser()

答案 4 :(得分:1)

>>> sorted(map(str, range(0,5) + range(0,5)))
['0', '0', '1', '1', '2', '2', '3', '3', '4', '4']

答案 5 :(得分:0)

[int(i/2 )for i in range(10)] 

[i//2 for i in range(10)]

答案 6 :(得分:0)

其他答案涵盖了问题中提到的具体案例,但如果您想复制任意列表的内容,可以使用以下内容:

>>> import itertools
>>> l = [1, 'a', 3]
>>> list(itertools.chain.from_iterable(zip(l,l)))
[1, 1, 'a', 'a', 3, 3]