Python:在列表解析中重复元素?

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循环的情况,但我很好奇是否可以通过列表推导来完成)

Ale*_*lli 7

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你正在扩展的实例命名.


bra*_*jam 6

尝试

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)