Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Python 从列表列表中减去列表_Python - Fatal编程技术网

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)]