【python】numpy 给list每一个元素加上相同的元素,报错:TypeError: can only concatenate list (not "int") to list

本文探讨了在Python中尝试将列表与整数直接相加导致的类型错误,并提供了三种有效的解决方案:使用for循环逐元素相加、利用NumPy数组进行操作并转换回列表,以及创建与原列表等长的全为指定整数的列表再相加。每种方法都有其适用场景和局限性。

原代码:

list = [1, 3, 7, 8, 10]
ele = 2

print(list + ele)

报错是因为两边类型不一致,一个是list,一个是int型。就算类型相同,也是list长度一致才能相加。

解决方案:

1、用for循环给每一个元素分别赋值:

print([x + ele for x in list])
[3, 5, 9, 10, 12]

这个方法的问题是如果在计算式中看起来比较繁琐不太简洁。

2、新建一个与list大小相同的list,其中每个元素都是需要相加的元素:

print(list + np.ones(np.shape(list)) * ele)
[  3.   5.   9.  10.  12.]

这个方法的问题是得到的结果已经不是list了,而是相同大小的数组。

3、先将这个list转换为数组,再相加:

print(np.array(list) + ele)
[ 3  5  9 10 12]

问题同上一种方法。如果非要list类型,再用.tolist()转回来即可:

print((np.array(list) + ele).tolist())

注意:

不能直接在int两边加上括号把要相加的元素转成list,输出结果会有问题:

print(list + [ele])
[1, 3, 7, 8, 10, 2]

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值