在Python中,如何将浮点列表转换为整数对列表?

2024-06-15 09:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

任务是将[1.5, 1.2, 2.4, 2.6, 3.0, 3.3]转换成[(2, 1), (2, 3), (3, 3)]

现在我用暴力的方式来做:

result = []
for i in range(0, len(nums), 2):
   x = int(round(nums[i]))
   y = int(round(nums[i + 1]))
   result.append((x,y))
return result

是否有更简洁的内置解决方案(例如,使用itertoools)?你知道吗


Tags: inforlenreturn方式rangeresult解决方案
3条回答

您可以zip将它们放在一起(使用交替模式[::2][1::2]),然后边走边循环:

L = [1.5, 1.2, 2.4, 2.6, 3.0, 3.3]
L = [(round(x), round(y)) for x, y in zip(L[::2], L[1::2])]
# [(2, 1), (2, 3), (3, 3)]

假设给定的列表总是由偶数个元素组成:

l = [1.5, 1.2, 2.4, 2.6, 3.0, 3.3]

def f(s):
    for i in range(int(len(s)/2)):
        yield (round(s[2*i]), round(s[2*i+1]))

print(list(f(l)))

#[(2, 1), (2, 3), (3, 3)]

您可以使用iter()zip()来创建对。稍后可以对值进行舍入。你知道吗

我将使用@Alex answer中的代码来显示差异

L = [1.5, 1.2, 2.4, 2.6, 3.0, 3.3]
it = iter(L)
L = [(round(x), round(y)) for x, y in zip(it, it)]

相关问题 更多 >