【发布时间】: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