2017-09-21 132 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