Я хотел бы объединить следующий список строк и список целых списков:
lst = ['A',
'A',
'B',
'C',
'C',
'D',
'D',
'D',....]
lst_of_lst = [[9, 10, 11, 12],
[54, 55, 56],
[72, 73, 74, 75, 76],
[1, 2, 3, 4, 5],
[98, 99, 100],
[13, 14],
[21, 22, 23],
[27, 28, 29, 30], ....]
такой, что возвращается список кортежей:
lst_tups = [('A', 9), ('A', 10), ('A', 11), ('A', 12),
('A', 54), ('A', 55), ('A', 56),
('B', 72), ('B', 73), ('B', 74), ('B', 75), ('B', 76),
('C', 1), ('C', 2), ('C', 3), ('C', 4), ('C', 5),
('C', 98), ('C', 99), ('C', 100),
('D', 13), ('D', 14),
('D', 21), ('D', 22), ('D', 23),
('D', 27), ('D', 28), ('D', 29), ('D', 30), ....]
2 списка имеют одинаковое количество элементов списка (в тестовом примере выше - 8). К сожалению, об использовании словарной стратегии не может быть и речи из-за повторяющихся строковых записей в lst
.
Я пробовал следующее, которое работает только для первого элемента каждого подсписка в lst_of_lst
и повторяется для каждой строки в lst
:
empty_test_combo = []
for x in helix_chain_id:
for y in helix_seq_res_num_ranges:
empty_test_combo += (zip(x, y))
Я также пробовал:
lst_tups = []
for x in lst:
for y in lst_of_lst:
for z in y:
lst_tups.append(zip(x, [z]))
Это кажется наиболее перспективным вариантом. Он возвращает список кортежей, который правильно комбинирует строки lst
и целые списки lst_of_lst
, но только частично.