【问题标题】:Convert list values from float to int in python在python中将列表值从float转换为int
【发布时间】:2021-08-25 05:46:41
【问题描述】:

我有以下清单:

lst = [(22027.0, 22943.0),
 (22026.0, 22939.0),
 (22025.0, 22936.0),
 (22025.0, 22932.0),
 (22027.0, 22929.0),
 (22030.0, 22926.0),
 (22031.0, 22922.0),
 (22033.0, 22919.0),
 (22033.0, 22907.0),
 (22030.0, 22908.0),
 (22029.0, 22911.0),
 (22027.0, 22914.0),
 (22025.0, 22918.0),
 (22021.0, 22930.0),
 (22018.0, 22931.0),
 (22015.0, 22928.0),
 (22012.0, 22924.0),
 (22011.0, 22921.0),
 (22011.33, 22920.0)]

我想将此列表值转换为 int。我尝试使用round,但它给了我以下错误。到目前为止我尝试了什么?

[round(i) for i in lst]

我收到以下错误TypeError: type tuple doesn't define __round__ method

期望的输出:

[(22027, 22943),
 (22026, 22939),
 (22025, 22936),
 (22025, 22932),
 (22027, 22929),
 (22030, 22926),
 (22031, 22922),
 (22033, 22919),
 (22033, 22907),
 (22030, 22908),
 (22029, 22911),
 (22027, 22914),
 (22025, 22918),
 (22021, 22930),
 (22018, 22931),
 (22015, 22928),
 (22012, 22924),
 (22011, 22921),
 (22011, 22920)]

【问题讨论】:

  • 元组是不可变的。里面的值不能改变。您必须在元组的两个元素内应用round。
  • 您正在尝试将元组转换为int,您可以这样做[tuple(map(int, x)) for x in lst]
  • 你有一个元组作为元素,所以你应该[(round(a), round(b)) for a, b in lst]

标签: python list integer tuples rounding


【解决方案1】:

你可以使用list-comprehension,list中的每个元素都是元组,所以你需要单独考虑它们,你也可以使用int()而不是round()来将浮点数转换为整数:

[(int(x), int(y)) for x,y in lst]

[(22027, 22943), (22026, 22939), (22025, 22936), (22025, 22932), (22027, 22929), (22030, 22926), (22031, 22922), (22033, 22919), (22033, 22907), (22030, 22908), (22029, 22911), (22027, 22914), (22025, 22918), (22021, 22930), (22018, 22931), (22015, 22928), (22012, 22924), (22011, 22921), (22011, 22920)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多