2017-03-02 59 views
0

例如,如果我有一個列表:如何使用python打印可能的選項列表?

L = [3, 3] 

我想打印: 每個索引以下可用動作:

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

什麼想法?

我試過[[i for i in lst] for lst in list],但這並沒有工作

+1

你能擴展一點關於如何將輸入列表轉換爲輸出列表的邏輯嗎? –

+0

不應該輸出[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0], [2,1],[2,2]]是否要打印每個索引的可用移動? –

+0

我給列表L = [3,3],我需要爲每個索引創建可能的選擇,例如索引0,我應該得到[3,索引0],[2,索引0],[1 ,索引0]等等每個索引 – Pepelepiu

回答

1

這是你腦子裏想的是什麼

my_list = [3,3] 
final_list = [] 
for i in range(0, my_list[0] + 1): 
    for j in range(my_list[0], 0, -1): 
     final_list.append([j, i]) 
print(final_list) 

輸出:

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

它有更多的結果比你在上市問題,但它涵蓋了所有的組合

+0

哇,謝謝你兄弟,如果可能的話,這可以在列表解析中完成嗎? – Pepelepiu

+1

@Pepelepiu列表理解不應該被濫用來解決所有問題。 –

+0

@ cricket_007明白了,所以我想列表理解應該只用於小項目列表,是嗎? – Pepelepiu

1
>>>import itertools as it 
>>> L 
[3, 3] 
>>> res = [[[i,j] for j in range(L[1])] for i in range(L[0],0,-1)] 
>>> print [i for i in it.chain.from_iterable(res)] 
[[3, 0], [3, 1], [3, 2], [2, 0], [2, 1], [2, 2], [1, 0], [1, 1], [1, 2]] 

希望能回答你的問題!

+1

可以簡單地爲'範圍(L [1])' –

0

,如果你想使用Python的方式

data = [3,3] 
print([[a,b] for a in range(data[0]+1) for b in range(data[1]+1)]) 

輸出將是

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

編輯

我看到你沒有在第一個想 '0'元素,所以只需使用range(1,data[0]+1)

data = [3,3] 
print([[a,b] for a in range(1,data[0]+1) for b in range(data[1]+1)]) 

的輸出將是

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

庵,沒有其他的答案的產生所需的結果。這樣做:

>>> L = [3, 3] 
>>> [[m, i] for i, n in enumerate(L) for m in range(n, 0, -1)] 
[[3, 0], [2, 0], [1, 0], [3, 1], [2, 1], [1, 1]]