将元素添加到python中的不相等列表中

时间:2018-12-18 07:08:09

标签: python

我有两个列表-:

a=[1,5,3,4,25,6]

b=[10,25,3]

现在我想要这种输出

b =[10,25,3,None,None,None]

要获得此输出,我使用了

for x,y in itertools.zip_longest(a,b):

但是,这对我没有帮助。如何获得所需的输出?

  

之后,我想给它一个列表的大小,我们添加零或无都没关系,最后我希望两个列表的大小都相同

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

你很近。您绝对可以使用zip_longest来获得所需的输出:

from itertools import zip_longest

a = [1, 5, 3, 4, 25, 6]
b = [10, 25, 3]

[y for _, y in zip_longest(a, b)]
# [10, 25, 3, None, None, None]

一个不同的选项,它不必不必要地产生压缩对,而只丢弃其中的一对,则可以使用迭代器和next

it = iter(b)
[next(it, None) for _ in range(len(a))]
# [10, 25, 3, None, None, None]

答案 1 :(得分:2)

我会做

>>> b += [None]*(len(a) - len(b))                                                                                      
>>> b                                                                                                                  
[10, 25, 3, None, None, None]
  

我要向其中传递4个列表,然后将None添加到比最长列表短的每个列表中,可以吗?

建立新列表(不可变):

>>> lists = [[1,5,3,4,25,6], [10,25,3], [], [1, 2]]                                                                    
>>> max_len = max(map(len, lists))                                                                                     
>>> [l + [None]*(max_len - len(l)) for l in lists]                                                                     
[[1, 5, 3, 4, 25, 6],
 [10, 25, 3, None, None, None],
 [None, None, None, None, None, None],
 [1, 2, None, None, None, None]]

使用itertools.zip_longest(不变):

>>> list(map(list, zip(*zip_longest(*lists))))                                                                         
[[1, 5, 3, 4, 25, 6],
 [10, 25, 3, None, None, None],
 [None, None, None, None, None, None],
 [1, 2, None, None, None, None]]

交互版本:

>>> max_len = max(map(len, lists))                                                                                     
>>> for l in lists: 
...:     l.extend([None]*(max_len - len(l))) 
...:                                                                                                                   
>>> lists                                                                                                              
[[1, 5, 3, 4, 25, 6],
 [10, 25, 3, None, None, None],
 [None, None, None, None, None, None],
 [1, 2, None, None, None, None]]