不使用numpy,如何实现嵌套列表与一维列表的逐元素减法?
解决嵌套列表与一维列表的逐元素减法问题
没问题,我来帮你搞定这个需求!你要做的是把二维嵌套列表里的每个子列表,分别减去一维列表中对应的单个数值,而且不能用numpy对吧?其实用列表推导式+zip函数就能完美解决,之前没成功可能是没把嵌套结构处理好,我给你一步步说明:
核心思路
因为你的x是二维列表(每个元素是子列表),y是一维列表,且y的长度和x的子列表数量一致,我们可以用zip(x, y)把x里的每个子列表和y里对应的数值一一配对,然后对每个子列表里的所有元素,都减去配对的那个数值。
实现代码
x = [[1, 2, 4], [0, 3, 2]] y = [2.3333333333333335, 1.6666666666666667] # 嵌套列表推导式完成减法操作 result = [[num - val for num in sublist] for sublist, val in zip(x, y)] print(result)
代码解释
- 外层的
for sublist, val in zip(x, y):把x的每个子列表(比如[1,2,4])和y里对应的数值(比如2.333...)配对; - 内层的
[num - val for num in sublist]:遍历当前子列表里的每个元素,都减去配对的val,生成新的子列表; - 最终所有新子列表组合起来就是你要的
x-y结果。
运行结果
执行这段代码后,输出的结果和你预期的几乎一致(浮点运算的精度差异属于正常现象):
[[-1.3333333333333335, -0.3333333333333335, 1.6666666666666665], [-1.6666666666666667, 1.3333333333333333, 0.3333333333333333]]
内容的提问来源于stack exchange,提问作者Python_learner
相关产品推荐
相关产品推荐

