鱼C论坛

 找回密码
 立即注册
查看: 1360|回复: 13

[已解决]关于两列表中数值的运算

[复制链接]
发表于 2020-7-21 21:08:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何将两个长度相等的列表中的数值按顺序一 一对应地相加?
类似于
A=[1,2,3,4,5,6]
B=[4,5,6,7,8,9]

怎么把1和4加,2和5加,依此类推
然后得到的结果也是一个列表


求大神指导
最佳答案
2020-7-21 21:18:39
_2_ 发表于 2020-7-21 21:10
需要用到推导式


你用错了,这样即可:
A=[1,2,3,4,5,6]
B=[4,5,6,7,8,9]
print([A[i]+B[i] for i in range(len(A))])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-21 21:10:23 From FishC Mobile | 显示全部楼层
需要用到推导式
[i + j for i in A for j in B]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-21 21:18:02 | 显示全部楼层
_2_ 发表于 2020-7-21 21:10
需要用到推导式

这样好像是把A中的数和B中的数都两两相加了一次
我想要只加对应位置上的数,就是A中的1只跟B中的4求和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:18:39 | 显示全部楼层    本楼为最佳答案   
_2_ 发表于 2020-7-21 21:10
需要用到推导式


你用错了,这样即可:
A=[1,2,3,4,5,6]
B=[4,5,6,7,8,9]
print([A[i]+B[i] for i in range(len(A))])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:19:44 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-7-21 21:25 编辑
能源系统建模 发表于 2020-7-21 21:18
这样好像是把A中的数和B中的数都两两相加了一次
我想要只加对应位置上的数,就是A中的1只跟B中的4求和


那也有
[A[_] + B[_] for _ in range(len(A))]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:21:14 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-7-21 21:18
你用错了,这样即可:

没想到你看见了……
好吧,第一次确实错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:24:31 | 显示全部楼层



你这改了和没改一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:26:23 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-7-21 21:24
你这改了和没改一样

……
为什么总是想着要用两个变量呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:28:07 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-7-21 21:24
你这改了和没改一样

在线丢人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:33:18 | 显示全部楼层
本帖最后由 BIO-张磊 于 2020-7-21 21:34 编辑

原生python列表无法实现一一对应相加,可以通过for循环解决。
不过numpy库的array提供了对应加减乘除的方法
array就是数组,与list不同的是array的中的类型必须全部相同。你就记住array是numpy库处理数据的基本形式就可以了,不必深究
list可以通过numpy转化为array
import numpy as np
A=[1,2,3,4,5,6]
B=[4,5,6,7,8,9]
arrayA = np.array(A)
arrayB = np.array(B)
print(arrayA + arrayB)

list(arrayA + arrayB)
它比for循环的好处就是,numpy是经过优化的,速度会比单纯的for循环要快。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:48:08 | 显示全部楼层
list(map(sum, zip(a, b)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:48:31 | 显示全部楼层
BIO-张磊 发表于 2020-7-21 21:33
原生python列表无法实现一一对应相加,可以通过for循环解决。
不过numpy库的array提供了对应加减乘除的方 ...

火箭轰蚊子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 22:33:52 | 显示全部楼层

怎么说呢,假如这个列表是个多维的,比如二维,这个方法就显得特别灵活了
A=[[1,2,3],[4,5,6]]
B=[[4,5,6],[7,8,9]]
np.array(A)+np.array(B)

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2020-7-21 22:35
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表