我有一个列表,例如
[[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.
答案 0 :(得分:0)
3>> [functools.reduce(operator.or_, x) for x in L]
[0, 1, 0, 2, 3, 2, 0, 3, 0, 2, 3]
答案 1 :(得分:0)
只需迭代:
new = [0 for i in range(len(old[0]))]
for a in old:
for b, c in enumerate(a):
new[b] += c
答案 2 :(得分:0)
你的目标是压扁2d列表吗?如果是这样,以下代码段中的b就是您想要的:
a = [[1,2,3],[4,5,6],[7,8,9]]
b = [val for sublist in a for val in sublist]
答案 3 :(得分:0)
假设你只能得到全零或一个非零数字,你可以在{0}作为{{1}的默认值过滤所有0之后在next
上调用filter
}。
next