2011-11-08 58 views
0

我目前正在生成使用下面的表达式列表(T和no_jobs是整数):对Python列表理解快速检查

for i in xrange(no_jobs): 
    row = row + T * [i] 

我想出了将其转换成一个列表理解语句的第一件事是:

[T*[i] for i in xrange(no_jobs)] 

但是,这显然创建了一个嵌套列表,这不是我正在寻找的。我的所有其他想法似乎都很笨拙,所以如果任何人有创建这些类型的列表pythonic和优雅的方式,我会gratefull。

+0

为我的range(no_jobs):对于x范围内(T): row.append(I) – Lucina

回答

6

嵌套循环。

[i for i in xrange(no_jobs) for x in xrange(T)] 
+0

完美,谢谢! – monostop

0

但是这显然造成这不是我正在寻找一个嵌套列表。

所以,只是平坦的结果。列表添加是串联的,所以我们可以通过'求和'把所有列表放在一起(用一个空列表作为“累加器”)。

sum((T*[i] for i in xrange(no_jobs)), []) 
+0

-1它不会做你说的那样,它不起作用。你需要'sum((T * [i] for xrange(no_jobs)),[])' –

+0

@JohnMachin编辑。我不知道我是如何表示需要一个累加器参数,然后将其排除。是的,'sum'不使用'* args'。 –