Use*_*ser 4 python list-comprehension
我有以下列表理解,它返回每个位置的坐标对象列表.
coordinate_list = [Coordinates(location.latitude, location.longitude)
for location in locations]
Run Code Online (Sandbox Code Playgroud)
这有效.
现在假设location对象具有number_of_times成员.我想要一个列表推导来生成n个Coordinate对象,其中n是特定位置的number_of_times.因此,如果某个位置的number_of_times = 5,那么该位置的坐标将在列表中重复5次.(也许这是一个for循环的情况,但我很好奇是否可以通过列表推导来完成)
coordinate_list = [x for location in locations
for x in [Coordinates(location.latitude,
location.longitude)
] * location.number_of_times]
Run Code Online (Sandbox Code Playgroud)
编辑:OP表明循环可能更清晰,考虑到标识符的长度,这绝对是可能的.等效代码将是这样的:
coordinate_list = [ ]
for location in locations:
coord = Coordinates(location.latitude, location.longitude)
coordinate_list.extend([coord] * location.number_of_times)
Run Code Online (Sandbox Code Playgroud)
循环确实看起来很好,部分原因extend是列表方法在这里工作得很好,部分原因是你可以为Coordinate你正在扩展的实例命名.
尝试
coordinate_list = [Coordinates(location.latitude, location.longitude)
for location in locations
for i in range(location.number_of_times)]
Run Code Online (Sandbox Code Playgroud)