Элементы списка списков разнести по двум спискам python

есть список списков формата:

[[(98, 0.454453), (678, 0.563333),(129, 0.879905)],
[(554, 0.769977), (28, 0.123533),(243, 0.986533)]]

мне необходимо данные находящиеся в до пробела и запятой, отнести к list1, а данные после пробела отнести к list2, как это лучше сдeлать?

результат должен быть такой:

list1=[98,678,129,554,28,243]
list2=[0.454453, 0.563333, 0.879905, 0.769977, 0.123533, 0.986533]

Ответы (2 шт):

Автор решения: Tehnorobot

Например, можно так (Простой вариант записи):

lsts = [[(98, 0.454453), (678, 0.563333),(129, 0.879905)], [(554, 0.769977), (28, 0.123533),(243, 0.986533)]]

list1 = []
list2 = []

for i in lsts:
    for j in i:
        list1.append(j[0])
        list2.append(j[1])
        
print(list1)
print(list2)

Вывод:

[98, 678, 129, 554, 28, 243]
[0.454453, 0.563333, 0.879905, 0.769977, 0.123533, 0.986533]

Для сохранения структуры списков можно немного переписать содержимое цикла, а то есть внутри нового списка добавлять список с каждой итерацией и записывать в него данные:

for k, i in enumerate(lsts):
    list1.append([])
    list2.append([])
    for j in i:
        list1[k].append(j[0])
        list2[k].append(j[1])

Вывод:

[[98, 678, 129] , [554, 28, 243]]
[[0.454453, 0.563333, 0.879905], [0.769977, 0.123533, 0.986533]]
→ Ссылка
Автор решения: CrazyElf

А на выходе обязательно списки? Вот кортежи, например:

lists = [[(98, 0.454453), (678, 0.563333),(129, 0.879905)],
[(554, 0.769977), (28, 0.123533),(243, 0.986533)]]

list1, list2 = zip(*sum(lists, []))
print(list1, list2, sep='\n')

Вывод:

(98, 678, 129, 554, 28, 243)
(0.454453, 0.563333, 0.879905, 0.769977, 0.123533, 0.986533)

Только для больших списков метод с sum медленно работает.

А так то можно и в списки перевести, но код чуть длиннее:

list1, list2 = map(list, zip(*sum(lists, [])))
→ Ссылка