将整数添加到列表中非整数的所有元素

时间:2018-01-21 01:43:22

标签: python list spyder

方法1:错误:ufunc'添加'没有包含签名匹配类型dtype的循环('

x = numpy.array(x)
x_5= x + 5

方法2:错误:必须是str,而不是int

x_5 = [x+5 for x in x]

方法3:错误:基数为10的int()的文字无效:' -0.081428368'  我试图将x数据首先转换为整数

x_int = list(map(int, x))

x_5 = [x+5 for x in x]

方法4:错误:' numpy.float64'对象不可迭代

x = numpy.array(x, dtype=float)
x = numpy.array(x)
x_piu_5= x + 5

方法5:错误:浮动对象不可迭代

x_piu_5=[]
xfl=[float(i) for i in x]
x_piu_5[:] = [x + 5 for x in xfl]

大家好

我想在我的列表中添加一个整数,其中包含很多数字,如0.00085695等,我使用了两种方法但是我没有成功

更新1:添加方法4,我已经获得了我想要的值,但现在的问题是它说numpy.float不可迭代

更新2:添加方法5,我应该在迭代之前将float转换为字符串吗?

1 个答案:

答案 0 :(得分:3)

问题的核心是您的列表x包含字符串,代表浮点数字。您需要将这些字符串转换为float个对象。

更确切地说:

  • 方法1 可以使用dtype=float修复,如评论中所示:

    x = numpy.array(x, dtype=float)
    x_5 = x + 5
    
  • 方法2 可以通过在添加5之前将x的项目转换为浮点值来修复:

    x_5 = [float(i) + 5 for i in x]
    
  • 方法3 可以使用float代替int来修复,因为您的值不是整数而是浮点值:

    x_float = list(map(float, x))
    x_5 = [i + 5 for i in x_float]
    

    请注意,此解决方案与方法2相同,只是稍微慢一些,占用空间更多,因为您正在创建其他列表。

  • 方法4 可以通过删除虚假x = numpy.array(x)行来修复。最终将使用与方法1相同的代码。

  • 至于方法5 ,我怀疑x不是通常的列表,而是浮动对象。

除了将值转换为正确的类型之外,您应该尝试的另一件事是为不同的事物使用不同的变量名称。在您的代码段中,您将x用于列表/数组以及这些列表的元素。虽然并不总是严格要求,但使用不同的变量名称可以解决很多困惑,让您免于许多麻烦!