我有一个存储坐标元组的列表。例如:
coords = [(0,0), (1,1), (4,4), (4,6), (9,2), (34,14), (43,6)]
我有另外两个元组作为分隔符(它们总是在coords
列表中),例如:
start = (1,1)
end = (9,2)
start
点并不总是列在end
点之前,但它们都始终在coords
列表中。
最后,我有另一个单独的坐标列表,例如:
to_add = [(50,50), (71,31), (84,24)]
基本上,我想删除coords
列表中的所有项目
位于start
和end
元组之间,并在其中添加to_add
项。最终的结果是这样的:
coords = [(0,0), (1,1), (50,50), (71,31), (84,24), (9,2), (34,14), (43,6)]
我该怎么做?
答案 0 :(得分:2)
将列表分为三个不同的列表,即从0索引到起始坐标索引,另一个从起始坐标索引到结束坐标,最后一个列表从结束坐标索引到列表的最后一个元素。现在只添加带有to_add列表的第一个和最后一个列表。
所需输出的代码段
start = (1,1)
end = (9,2)
start, end = sorted((end, start))
to_add = [(50,50), (71,31), (84,24)]
coords = coords[:coords.index(start)+1] + to_add + coords[coords.index(end):]
输出
[(0, 0), (1, 1), (50, 50), (71, 31), (84, 24), (9, 2), (34, 14), (43, 6)]
答案 1 :(得分:1)
使用sorted()
和list.index()
函数的解决方案:
coords = [(0,0), (1,1), (4,4), (4,6), (9,2), (34,14), (43,6)]
end = (1,1)
start = (9,2)
to_add = [(50,50), (71,31), (84,24)]
bounds = sorted((end, start)) # getting arranged boundaries
coords[coords.index(bounds[0])+1:coords.index(bounds[1])] = to_add
print(coords)
输出:
[(0, 0), (1, 1), (50, 50), (71, 31), (84, 24), (9, 2), (34, 14), (43, 6)]