我有一个列表,看起来像这样:
testList =
[[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)]
[(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)]
[(459.0, 354.0), (480.0, 349.0), (483.0, 366.0)] ...]
每个列表代表我尝试用线条绘制的三角形。我有一个不相关的绘图方法,绘制从第一个顶点到第二个到第三个并返回到第一个顶点的线(从而绘制一个三角形)。我也希望将这些三角形连接在一起而不绘制新行,因此我想连续对testList [i] [0]进行排序。
所以,我想重新排列列表中的顶点AND testList
,如下所示:
testList =
[[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)]
[(480.0, 349.0), (459.0, 354.0), (483.0, 366.0)]
[(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)]...]
其中testList[2]
跳至testList[1]
,testList[1][0]
和testList[1][1]
切换。
感谢Alfonso Jiménez,这是我到目前为止采用的方法:
for subList in testList1:
subList.sort()
testList1.sort()
效果很好,除了我仍然注意到完整的testList部分,如:
...[(215.0, 737.0), (298.0, 633.0), (317.0, 660.0)]
[(317.0, 660.0), (333.0, 599.0), (394.0, 660.0)]
[(298.0, 633.0), (317.0, 660.0), (333.0, 599.0)]
[(282.0, 75.0), (316.0, 74.0), (336.0, 71.0)]...
可以重新排列以具有相同的testList [i] [0s]但不要注意(317.0,660.0)顶点不移动到位置[0]。您可能会看到完整输出{{3} }
我是python的初学者,所以任何帮助都会非常感激。谢谢!
答案 0 :(得分:0)
你的问题有点混乱,这就是你想要的:
我尝试了递归方法,它会从你的列表中删除并重新排序3-3项:
testList = [[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)],
[(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)],
[(459.0, 354.0), (480.0, 349.0), (483.0, 366.0)]]
def triangles(test_line):
updated_list=[]
if not test_line:
return 0
else:
for index,item in enumerate(test_line[:3]):
if index==0:
updated_list.insert(index,test_line[index])
if index==1:
updated_list.insert(2,test_line[index])
if index==2:
test_line[index][0], test_line[index][1] = test_line[index][1], test_line[index][0]
updated_list.insert(1,test_line[index])
print(updated_list)
return triangles(test_line[3:])
print(triangles(testList))
输出:
[[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)], [(480.0, 349.0), (459.0, 354.0), (483.0, 366.0)], [(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)]]
使用更新的长列表进行测试用例:
testList = [[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)],
[(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)],
[(459.0, 354.0), (480.0, 349.0), (483.0, 366.0)],
[(215.0, 737.0), (298.0, 633.0), (317.0, 660.0)],
[(317.0, 660.0), (333.0, 599.0), (394.0, 660.0)],
[(298.0, 633.0), (317.0, 660.0), (333.0, 599.0)]]
输出:
[[(480.0, 349.0), (459.0, 354.0), (467.0, 343.0)], [(480.0, 349.0), (459.0, 354.0), (483.0, 366.0)], [(467.0, 343.0), (455.0, 344.0), (462.0, 334.0)]]
[[(215.0, 737.0), (298.0, 633.0), (317.0, 660.0)], [(317.0, 660.0), (298.0, 633.0), (333.0, 599.0)], [(317.0, 660.0), (333.0, 599.0), (394.0, 660.0)]]