【问题标题】:Cannot convert value or type of items in Python list [duplicate]无法转换 Python 列表中项目的值或类型 [重复]
【发布时间】:2020-08-15 10:17:30
【问题描述】:

为什么不能更改列表项的类型或值?

a = ['3.465759','2.8797','9.23544']

for each in a:
    print(each)
    each = round(float(each),3) + 2    
print(a)

结果是

   ['3.465759', 2.8797, '9.23544']

【问题讨论】:

  • [round(float(x), 3) + 2 for x in a] ?

标签: python python-3.x


【解决方案1】:

each 是循环变量,它在下一次迭代中获取a 中的下一个值。将转换后的值存储在另一个列表中。


a = ['3.465759','2.8797','9.23544']
b = []
for each in a:
    print(each)
    each = round(float(each),3) + 2    
    b.append(each)
print(b)

输出:

3.465759
2.8797
9.23544
[5.466, 4.88, 11.235]

如果你想就地修改列表,那么

a = ['3.465759','2.8797','9.23544']

for i in range(len(a)):
    each = a[i]
    print(each)
    each = round(float(each),3) + 2
    a[i] = each
print(a)

使用列表理解

[round(float(each),3) + 2 for each in a]

【讨论】:

  • 在循环中修改列表是不好的做法
  • 是的。我同意
  • @NicolasGervais 为什么你认为这是不好的做法?该代码正在迭代一系列索引并将新值分配给列表元素。列表本身根本不会改变,因为它的长度始终保持不变。
【解决方案2】:

您没有更改a,当您进行转换时,请确保更改值:即:

a = ['3.465759','2.8797','9.23544']
for i  in range(len(a)):
    each = a[i]
    print(each)
    each = round(float(each),3) + 2 
    a[i] = each   
print(a)

a = ['3.465759','2.8797','9.23544']
for i, each in enumerate(a):
    print(each)
    each = round(float(each),3) + 2 
    a[i] = each   
print(a)
3.465759
2.8797
9.23544
[5.466, 4.88, 11.235]

【讨论】:

    【解决方案3】:
    a = ['3.465759','2.8797','9.23544']
    
    result = []
    for each in a:
        each = round(float(each),3) + 2  
        result.append(each)
    print(result)
    
    Output: [5.466, 4.88, 11.235]
    

    这是你要找的吗?

    【讨论】:

      【解决方案4】:

      你可以使用map:

      a = ['3.465759','2.8797','9.23544']
      float_list = list(map(float, a))
      print(float_list)
      

      输出:

      [3.465759, 2.8797, 9.23544]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-12-29
        • 2016-06-23
        相关资源
        最近更新 更多