Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python3.x中组合列表_Python_List_Python 3.x_Dictionary - Fatal编程技术网

在python3.x中组合列表

在python3.x中组合列表,python,list,python-3.x,dictionary,Python,List,Python 3.x,Dictionary,我有一个列表,例如 [[0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0, 0], [0, 0, 3, 0, 0, 0, 0], [0, 0, 0, 2, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 2, 0], [0, 0, 0,

我有一个列表,例如

[[0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0, 0], [0, 0, 3, 0, 0, 0, 0], [0, 0, 0, 2, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 2, 0], [0, 0, 0, 0, 0, 0, 3]]
我想把它合并成一个整数列表

[0,1,0,2,3,2,0,3,0,2,3]
我找不到一个确切的方法来实现它

该模式是,如果列表中有除0以外的任何数字,则将其添加为找到的实际数字,或者将其输入为0。

只需像这样迭代:

3>> [functools.reduce(operator.or_, x) for x in L]
[0, 1, 0, 2, 3, 2, 0, 3, 0, 2, 3]
new = [0 for i in range(len(old[0]))]

for a in old:
    for b, c in enumerate(a):
        new[b] += c

您的目标是将2d列表展平吗?如果是这样,下面代码段中的b就是您想要的:

a = [[1,2,3],[4,5,6],[7,8,9]]
b = [val for sublist in a for val in sublist]

假设您只得到全部零或一个非零数字,则在过滤所有0后,您可以调用
过滤器上的
next
,默认值为
next

l = [[0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0, 0], [0, 0, 3, 0, 0, 0, 0], [0, 0, 0, 2, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 2, 0], [0, 0, 0, 0, 0, 0, 3]]


print([next(filter(None,sub),0) for sub in l] )
[0, 1, 0, 2, 3, 2, 0, 3, 0, 2, 3]

如果两个子列表在同一位置有一个非零的数字,会发生什么?我不知道如何“组合”它们?如果两个列表在同一索引中有数字,会发生什么情况?根据您的示例,第二个列表以
1
开始,但结果以
0
开始……您可以扩展组合这两个列表的规则吗?@sedavidw它实际上并不取决于值在第一个列表中的位置。我唯一的标准是查看列表是否全部为零,如果是,则仅在新列表中追加0,否则追加找到的实际值。(列表列表的内部索引)不重要如果输入[[0,0],[1,2]]会怎么样?预期输出是[0,1,2]还是[0,1](即,仅列表中的第一个非零数计数)?