Python -坚持正确的列表赋值



事情是这样的:

coords = [['60', '01'], ['30', '19']]
coords = [int(coords[i][j])/60**j for i in range(2) for j in range(len(coords[i]))]

预期输出:

>>>[[60.0, 0.016666666666666666], [30.0, 0.31666666666666665]]

我得到了什么:

>>>[60.0, 0.016666666666666666, 30.0, 0.31666666666666665]

给我一个提示:如何通过列表理解以理想的方式赋值?

尝试切换for循环的顺序并添加括号:

coords = [[int(coords[i][j])/60**j for j in range(len(coords[i]))] for i in range(2)]
print(coords)

输出:

[[60.0, 0.016666666666666666], [30.0, 0.31666666666666665]]

由于已经将值2硬编码为内部数组的长度,因此可以使用更简单的推导式:

coords = [[int(a), int(b)/60] for a,b in coords ]

可以移动第二个for循环并将其括起来:

coords = [[int(coords[i][j])/60**j for j in range(len(coords[i]))] for i in range(2) ]

输出:

[[60.0, 0.016666666666666666], [30.0, 0.31666666666666665]]
[[int(j)/60**idx for idx, j in enumerate(i)] for i in coords]
[[60.0, 0.016666666666666666], [30.0, 0.31666666666666665]]
[
[int(element)/60**i for i, element in enumerate(sublist)]
for sublist in coords
]

最新更新