Python - 坚持正确的列表分配
Python - stuck with correct list assignment
事情是这样的:
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]]
您可以移动第二个 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]]
由于您已将值 2 硬编码为内部数组的长度,因此您可以使用更简单的理解:
coords = [[int(a), int(b)/60] for a,b in coords ]
[
[int(element)/60**i for i, element in enumerate(sublist)]
for sublist in coords
]
事情是这样的:
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]]
您可以移动第二个 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]]
由于您已将值 2 硬编码为内部数组的长度,因此您可以使用更简单的理解:
coords = [[int(a), int(b)/60] for a,b in coords ]
[
[int(element)/60**i for i, element in enumerate(sublist)]
for sublist in coords
]