【问题标题】:how to solve TypeError: 'float' object is not iterable如何解决 TypeError: 'float' object is not iterable
【发布时间】:2018-04-24 09:48:01
【问题描述】:

如何转移

A = [0.12075357905088335, -0.192198145631724, 0.9455373400335009, -0.6811922263715244, 0.7683786941009969, 0.033112227984689206, -0.3812622359989405] 

到

A = [[0.12075357905088335], [-0.192198145631724], [0.9455373400335009], [-0.6811922263715244], [0.7683786941009969], [0.033112227984689206], [-0.3812622359989405]]

我尝试了下面的代码,但发生了错误:

new = []
for i in A:
    new.append.list(i)

TypeError: 'float' object is not iterable

谁能帮帮我?

【问题讨论】:

  • 请您粘贴您在问题中使用的实际代码吗?您粘贴的代码给出了AttributeError: 'builtin_function_or_method' object has no attribute 'list',它没有给出TypeError。

标签: python python-3.x


【解决方案1】:

tl;博士

试试list comprehension,方便多了:

new = [[i] for i in A]

说明

您得到TypeError,因为您不能将list() 函数应用于float 类型的值。 This function 将可迭代对象作为参数,而 float 不是可迭代对象。

另一个错误是您使用的是new.append._something 而不是new.append(_something):append 是method 的list 对象,因此您应该提供一个作为参数添加的项目。

【讨论】:

    【解决方案2】:

    你错了,试试:

    new = []
    for i in A:
        new.append([i])
    

    这里有更漂亮的解决方案:

    new = [[i] for i in A]
    

    【讨论】:

      【解决方案3】:

      list.append 是一个需要参数的方法,例如new.append(i) 或在本例中为 new.append([i])。

      列表理解是一个更好的主意,请参阅@IvanVinogradov's solution。

      如果您对使用第 3 方库感到满意,请考虑使用 numpy 获取矢量化解决方案:

      import numpy as np
      
      A = [0.12075357905088335, -0.192198145631724, 0.9455373400335009, -0.6811922263715244, 0.7683786941009969, 0.033112227984689206, -0.3812622359989405] 
      
      A = np.array(A)[:, None]
      
      print(A)
      
      # [[ 0.12075358]
      #  [-0.19219815]
      #  [ 0.94553734]
      #  [-0.68119223]
      #  [ 0.76837869]
      #  [ 0.03311223]
      #  [-0.38126224]]
      

      【讨论】:

        【解决方案4】:

        我认为你是这样使用的:

        my_data=b['dataset']['data'][0][1]
        useful_data=[i[1] for i in my_data]
        

        所以当你编译它会给你一个错误:

        TypeError: 'float' 对象不可迭代

        只试一试:

        my_data=b['dataset']['data']
        

        然后你会得到你的数据。

        【讨论】:

          猜你喜欢
          • 2021-08-08
          • 2018-06-29
          • 2017-10-14
          • 2018-07-28
          • 2019-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多