Собрать в список пары значений из разных циклов

lines #полученный beautifulSoup-файл (но не суть)
cont = []
x1 = ''
y1 = ''

for i in lines:

    с1 = re_cat_n.findall(str(i)) #чищу каждый i по написанной регулярке re_cat_n
    for i in enumerate(filter(None, с1)): #применяю фильтр (чтобы пустых значений внутри списка не было
        с1 = i[1] # беру второй столбец из enumerate
        print(с1) # печатаю внутри цикла все хорошо

есть второй такой же цикл c2

Проблема: пытаюсь собрать

cont.append(с1, с2) # не получается.

Вопрос, как получить:

cont = [(с1[0], c2[0]), (c1[1], c2[1]), etc..]

решение было таким:

в циклах - cont1.append(c1) и сont2.append(c2)

после циклов - cont = list(zip(cat_num, price))


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

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

Для параллельного перебора нескольких последовательностей в питоне есть специальная функция zip, которая даёт на выходе именно (с1[0], c2[0]), (c1[1], c2[1]), ...

zip(c1, c2)

Правда, zip выдаёт на выходе итератор, если вы хотите именно список получить, то нужно в него преобразовать результат:

list(zip(c1, c2))
→ Ссылка
Автор решения: Vadim.Sharoikin

Кроме zip можно еще так c помощью numpi. Только 2 цикл замените на свой(я взял как 1 и заменил 1 на 2)

import numpy as np
lines #полученный beautifulSoup-файл (но не суть)
cont1 = []
cont2 = []
x1 = ''
y1 = ''

for i in lines:

    с1 = re_cat_n.findall(str(i)) #чищу каждый i по написанной регулярке re_cat_n
    for i in enumerate(filter(None, с1)): #применяю фильтр (чтобы пустых значений внутри списка не было
        с1 = i[1] # беру второй столбец из enumerate
        cont1.append(с1)

for i in lines:

    с2 = re_cat_n.findall(str(i)) #чищу каждый i по написанной регулярке re_cat_n
    for i in enumerate(filter(None, с2)): #применяю фильтр (чтобы пустых значений внутри списка не было
        с2 = i[1] # беру второй столбец из enumerate
        cont2.append(с2)

cont = np.c_[np.array(cont1), np.array(cont2)]
→ Ссылка