在 python 中将列表值从 float 转换为 int

Convert list values from float to int in python

我有以下列表:

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)]

可以使用list-comprehension,list里面的每个元素都是tuple,需要单独考虑,也可以用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)]
x = [(87.8,68.9),(122.0,68.4),(178.9,63.4),(245.6,68.1)]
y =[]
for i in x:  
    b = tuple(map(int, i))
    y.append(b)
print(y)