事情是这样的:
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
]