2017-09-21 129 views
0

創建與結果的結果,名單我在Python是新的,之前我曾在Perl和C.遍歷多個列表,並在Python

我遇到簡單的問題,它可以由Python輕易敲定專家們。

我有列表,列表中的值可以是隨機的。

list_a = [True, False] 
list_b = [False, True] 
list_c = [True] 

我需要遍歷多個列表。我已經研究並得到以下工作。

output_list = [] 

for i,j,k in map(None, list_a, list_b, list_c): 

     output_list.append([i,j,k]) 

但我現在面臨的挑戰面臨的挑戰是它產生的輸出是這樣的輸出後:[(True,False,True), (False,True, None)]

output_list [0] = [真,假,真] output_list [1] = [假,真,無]

期望值應該返回給出一個關於列表的線索。

output_list [0] = [True_list_a,False_list_b,True_list_c] output_list [1] = [False_list_a,True_list_b,None_list_c]

我沒有輸出我output_list的線索是list_a或list_b或list_c的。

如何用相應的list_a,list_b,list_c元素創建output_list,以便我可以發送到該函數。

有什麼方法可以找到它嗎?提前致謝。

+1

顯示'ouput_list'應該看起來像什麼 –

+0

你期望什麼確切的輸出? – RomanPerekhrest

+0

感謝您的快速回復,output_list應該有關於列表元素的線索,如list_a,list_b和list_c。我目前沒有得到如何創建output_list來獲得list_a,list_b和list_c的線索。如何以pythonic的方式進行更多!? – Sandy

回答

1

只是一個猜測。也許,你想這樣的事情(與您的評論方面「...... output_list應該有一個關於元素的線索,其中列出它爲」):

import itertools 

list_a = [True, False] 
list_b = [False, True] 
list_c = [True] 

output_list = [{'list_a':t[0], 'list_b':t[1], 'list_c':t[2]} 
       for t in itertools.zip_longest(list_a, list_b, list_c)] 

print(output_list) 

輸出:

[{'list_a': True, 'list_b': False, 'list_c': True}, {'list_a': False, 'list_b': True, 'list_c': None}] 
+0

感謝羅馬人,這是否會在Python2.7中工作?我看到tupel索引超出範圍。 – Sandy

+0

@Sandy,歡迎,對於Python 2.7,你應該用'itertools.izip_longest'替換'itertools.zip_longest' – RomanPerekhrest

+0

是的非常感謝你,我發現了你所說的izip_longest並且試過了等價函數。但是,列表僅返回[{'list_a':False,'list_b':None,'list_c':False}]。我錯過了什麼? – Sandy

0

我猜你想這樣的事情:

import itertools 
output_list = list(itertools.chain(list_a, list_b, list_c)) 
+0

編輯該問題的更多細節,請參考。 – Sandy