это сделает трюк
from itertools import izip_longest
izip_longest(it[::2], it[1::2])
, где * it * является итеративным
Пример:
izip_longest('abcdef'[::2], 'abcdef'[1::2]) -> ('a', 'b'), ('c', 'd'), ('e', 'f')
Давайте разберем это
'abcdef'[::2] -> 'ace'
'abcdef'[1::2] -> 'bdf'
Как вы можете видеть, последний номер в срезе указывает интервал, который будет использоваться для сбора предметов. Вы можете прочитать больше об использовании расширенных срезов здесь .
Функция zip берет первый элемент из первой итерируемой и объединяет его с первым элементом со второй итерируемой. Затем функция zip делает то же самое для второго и третьего элементов, пока у одного из итераций не заканчиваются значения.
Результатом является итератор. Если вы хотите список, используйте функцию list () для результата.
] MAX_JOIN_SIZE
- это предохранитель, обычно используемый на общих хостингах.
Он не позволит вам случайно запустить длинные запросы, которые могут привести к зависанию сервера.
Введите эту команду:
SET SQL_BIG_SELECTS = 1
перед выполнением запроса, который вы знать, как вернуть много значений.
MAX_JOIN_SIZE срабатывает, когда MySQL вычисляет декартово произведение соединения, а не фактические ожидаемые записи. Поэтому, если вы присоединяете большой стол к другому массивному столу, это будет постепенно увеличиваться. Используйте индексы и представления, чтобы сократить возможные попадания в таблицу, если она действительно такая большая.
Подробнее см. Здесь: MySQL - SQL_BIG_SELECTS