Python 从列表列表中减去列表
我正在尝试从列表列表中删除列表。例如:Python 从列表列表中减去列表,python,Python,我正在尝试从列表列表中删除列表。例如: n = [[1,2,3], [2,3,4], [43,2,5]] m = [4,5,6] 我想从n[0]中的所有值中减去m[0],然后转到m[1],然后从n[1]中的所有值中减去m[1],以此类推 最后,我想把这样的东西作为我的输出 Output = [[3,2,1], [3,2,1], [37,4,1]] 这是我的密码: def diff(n,m): for i in range(0,3): newlist = [[abs(m
n = [[1,2,3], [2,3,4], [43,2,5]]
m = [4,5,6]
我想从n[0]中的所有值中减去m[0],然后转到m[1],然后从n[1]中的所有值中减去m[1],以此类推
最后,我想把这样的东西作为我的输出
Output = [[3,2,1], [3,2,1], [37,4,1]]
这是我的密码:
def diff(n,m):
for i in range(0,3):
newlist = [[abs(m[i]-value) for value in sublist]
for sublist in n]
return newlist
n = [[1,2,3], [2,3,4], [43,2,5]]
m = [4,5,6]
diff(n,m)
Output = [[3,2,1], [3,2,1], [37,4,1]]
您只需从
n[i]
中的值中减去m[i]
,但您的代码是从n
的所有元素中减去m[i]
,然后只返回减去m[2]
的结果,因为您在for
循环的每次传递中都会覆盖newlist
。下面是一个满足您需求的列表:
n = [[1,2,3], [2,3,4], [43,2,5]]
m = [4,5,6]
o = [[abs(v-m[i]) for v in n[i]] for i in range(len(m))]
print(o)
输出:
[[3, 2, 1], [3, 2, 1], [37, 4, 1]]
只是一个pythonic列表理解(使用
zip
而不是索引)
好的,你的问题是什么?我的代码没有按预期工作,我错了什么?谢谢这是我当前的输出“”,输出=[[5,4,3],[4,3,2],[37,4,1]。“”“根据你的问题,你的输出与你想要的输出相同。你说它没有按预期工作是什么意思?提供问题的全部细节;看。那么请回答你的问题。这比索引有什么好处?@Eniola它更短、更快、更像蟒蛇。谢谢。对于python初学者,您可以给出什么建议?这似乎很难,有时令人沮丧。
[[abs(b-x) for x in a] for a, b in zip(n, m)]