Скажут, у меня есть списокКак удалить кортеж в списке в списке:
dist= [[(0.0, 1.0)], [(20.0, 0.8563799085248148)], [(40.0, 0.8371216462519347)], [(60.0, 0.9282032302755089)], [(80.0, 7.8429970322236064), (80.0, 1.2045483557883576)], [(100.0, 3.753460385470896), (100.0, 2.070863609380179)], [(120.0, 2.6794919243112276), (120.0, 12.92820323027545)], [(140.0, 2.298981118867903)], [(160.0, 2.250827351906659)], [(180.0, 2.4999999999999996), (180.0, 6.000000000000004)], [(200.0, 3.2523178818773006), (200.0, 3.0522653889161626)], [(220.0, 5.622391569468206), (220.0, 2.226834844885431)], [(240.0, 37.32050807568848), (240.0, 1.9366857335569074)], [(260.0, 1.9181147622136665)], [(280.0, 2.1576718089133085)], [(300.0, 2.85976265663383)], [(320.0, 2.9627929206431776), (320.0, 5.162096782237789)], [(340.0, 1.4051274947736847), (340.0, 69.47032761621178)]]
Обратите внимание, что у меня есть некоторые элементы в списке, которые разделяют первый элемент (Извините за неправильную терминологию). Например , dist[4]
- [(80.0, 7.8429970322236064), (80.0, 1.2045483557883576)]
; и 80 находится в обоих кортежах.
Теперь я хочу удалить кортеж, чей элемент tup[1]
больше. Таким образом, в этом случае, я хочу удалить (80.0, 7.8429970322236064)
потому 7.84299 ... больше чем 1.20454 ....
После того, как процесс будет завершен, dist[4]
будет только [(80.0, 1.2045483557883576)]
Я пытался что-то вроде этого
for e in range(len(dist)):
if len(dist[e]) >= 2:
for f in range(len(dist[e])):
del max(dist[e][f])
Но он возвращает это:
>SyntaxError: can't delete function call
'макс (расстояние [е] [е])' является поплавок, где вы проверка общих первых элементов? –
На основании ввода, похоже, он забыл упомянуть, что, когда кортежи были вместе в подсписке, они имеют тот же самый первый элемент. – Brionius
Можете ли вы уточнить - должны ли кортежи удаляться только в том случае, если они имеют общий первый элемент? Или они всегда будут иметь общий первый элемент, если они находятся во внутреннем списке вместе? – DNA