«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как `Zip ([iter (s)]*n)` эффективно разделяется список на равные куски в Python?

Как `Zip ([iter (s)]*n)` эффективно разделяется список на равные куски в Python?

Опубликовано в 2025-02-06
Просматривать:317

How does `zip([iter(s)]*n)` efficiently split a list into equal chunks in Python?

деконструирование Zip (] [iter (s)] n) в Python

в Python, функция Zip () объединяет элементы из множества итерам в единственную итерабируемую кортежи. При использовании с синтаксисом Zip ( [iter (s)] n) он предлагает удобный способ разделить список на куски одинакового размера.

выражение [iter (s)]

n создает список, содержащий n копий итератора над списком s. Каждая копия итератора начинается в начале списка. *Args распаковывает список в аргументы для Zip (), в результате чего n иеры передаются в функцию.

verbose эквивалент:

для воссоздания функциональности Zip ( [iter (s)]

n) с словесным кодом:

def verbose_chunk (s, n): "" "Возвращает список кусков одинакового размера из списка." "" "" кусочки = [] для я в диапазоне (n): chunk = [] Для j в диапазоне (Len (s) // n): chunk.append (следующий (iter (s))) chunks.append (Tuple (Chunk)) вернуть куски

этот код сначала итерации по желаемому количеству кусков. Для каждой куски он использует вложенную петлю для итерации над элементами в списке и добавляет их в кусок. Затем кусок преобразуется в кортеж и добавляется в список кусочек. , 7,8,9] n = 3 print (list (zip (*[iter (s)]*n)) # [(1,2,3), (4,5,6), (7,8,9)]] print (verbose_chunk (s, n)) # [(1,2,3), (4,5,6), (7,8,9)]
def verbose_chunk(s, n):
  """Returns a list of chunks of equal size from a list."""
  chunks = []
  for i in range(n):
    chunk = []
    for j in range(len(s) // n):
      chunk.append(next(iter(s)))
    chunks.append(tuple(chunk))
  return chunks
оба подхода дают одинаковый результат с Краткий Zip (

] [iter (s)]

n) выражение, предлагающее более эффективный синтаксис для разделения списков на кусочки.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3