2011-11-08 96 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'。 –