Перебор массива и группировка каждой n-й строки

#python #python-3.x #pandas

#python #python-3.x #панды

Вопрос:

Всем добрый вечер!

Вопрос относительно списков,

Если у меня есть список с N элементами — как мне индексировать массив, отправляя каждые N строк в новый список.

 class _TVRequestGET_######:
def __init__(self):
    self.TVRequestURL = "############" 
    self.emptyArray   = []
def __GET__(self):
    dataStream      = requests.get(######().TVRequestURL).text
    regexStrSym     = 'target="_blank">(w )</a><'
    regexStrDT      = '>(d{10,20}.00)<'
    findSymbols     = re.findall(regexStrSym, dataStream)
    findDateTme     = re.findall(regexStrDT , dataStream)
    return __dataStream__
 

При запуске findDateTme возвращает массив из 188 элементов — каждые два значения связаны, поэтому мне нужно иметь возможность захватить findDateTme[i], findDateTme[i 1] , а затем при создании второй группы findDateTme[i 2], findDateTme[i 3] конечный массив будет состоять из 94 элементов в виде [a,b]

Это была моя попытка, но я столкнулся с индексом списка вне диапазона, и это потому, что, когда i = 189, тогда я буду равен 189 — 1 = 188, что выводит индекс за пределы диапазона

 for i in range(len(findDateTme)):
    i = i   1
    self.emptyArray = [findDateTme[i], findDateTme[i-1]]

return self.emptyArray
 

Спасибо!

Ответ №1:

как насчет попробовать:

 for i in range(0, len(findDateTme) - 1, 2):
    self.emptyArray = [findDateTme[i], findDateTme[i   1]]
 

при использовании цикла for не изменяйте i или другую индексную переменную внутри цикла, делайте это только в цикле while.

надеюсь, это поможет.

Комментарии:

1. Потрясающе! Спасибо!

Ответ №2:

В качестве сокращения вы можете сделать

 for x,y in zip(findDateTme[::2], findDateTme[1::2]):
    self.emptyArray.append([x,y])
return self.emptyArray
 

Также вам нужно добавлять к вашему массиву, а не заменять его на каждой итерации цикла.

Комментарии:

1. Я принял это как ответ — большое спасибо