止まる原因
ループ対象のlstに挿入しているせいで、意図通り動いていません。
python
1import time
2lst = [(1, 3), (2, 5), (2, 4), (5, 4), (6, 9)]
3
4for i, k in enumerate(lst):
5 if i == 0:
6 pre = k
7 else:
8 print(pre) # debug用に追加
9 x = k[0] - pre[0]
10 y = k[1] - pre[1]
11 midx = pre[0] + x / 2
12 midy = pre[1] + y / 2
13 lst.insert(i+1, (midx, midy))
14 pre = k
15 time.sleep(0.3) # debug用に追加(たくさん出てくると流れて鬱陶しいので)
16
17""" =>
18(1, 3)
19(2, 5)
20(1.5, 4.0)
21(1.75, 4.5)
22(1.625, 4.25)
23(1.6875, 4.375)
24(1.65625, 4.3125)
25(1.671875, 4.34375)
26(1.6640625, 4.328125)
27(1.66796875, 4.3359375)
28(1.666015625, 4.33203125)
29(1.6669921875, 4.333984375)
30(1.66650390625, 4.3330078125)
31(1.666748046875, 4.33349609375)
32(1.6666259765625, 4.333251953125)
33(1.66668701171875, 4.3333740234375)
34(1.666656494140625, 4.33331298828125)
35(1.6666717529296875, 4.333343505859375)
36(1.6666641235351562, 4.3333282470703125)
37(1.6666679382324219, 4.333335876464844)
38(1.666666030883789, 4.333332061767578)
39...
40"""
対策
結果格納用のlistを別途作りましょう。
python
1lst = [(1, 3), (2, 5), (2, 4), (5, 4), (6, 9)]
2
3result = []
4for i, k in enumerate(lst):
5 if i == 0:
6 pre = k
7 else:
8 x = k[0] - pre[0]
9 y = k[1] - pre[1]
10 midx = pre[0] + x / 2
11 midy = pre[1] + y / 2
12 result.append((midx, midy))
13 pre = k
14 result.append(k)
15
16print(result) # => [(1, 3), (1.5, 4.0), (2, 5), (2.0, 4.5), (2, 4), (3.5, 4.0), (5, 4), (5.5, 6.5), (6, 9)]