«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу сжать списки разной длины, повторяя более короткий?

Как я могу сжать списки разной длины, повторяя более короткий?

Опубликовано 8 ноября 2024 г.
Просматривать:810

How Can I Zip Unequal Length Lists by Repeating the Shorter One?

Сжатие списков разного размера путем повторения более короткого списка

При попытке сжать два списка разной длины встроенная функция сжатия не работает короче, не повторяя более короткий список в соответствии с большим. Чтобы преодолеть эту проблему, необходимы альтернативные подходы.

Решение Использование itertools.cycle

Функция itertools.cycle предоставляет возможность бесконечно перебирать итерацию. Эту функцию можно использовать для бесконечного повторения более короткого списка, одновременно сжимая его с более длинным списком.

Реализация:

import itertools

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

zip_list = zip(A, itertools.cycle(B)) if len(A) > len(B) else zip(itertools.cycle(A), B)

В этом решении мы используем условный оператор чтобы определить, какой список следует повторить. Если A длиннее B, мы используем itertools.cycle для повторения B, а если B длиннее A, мы повторяем A.

Полученный zip_list будет содержать кортежи, соединяющие элементы из A и B, причем B — это повторяется по мере необходимости, чтобы соответствовать длине A. Этот подход гарантирует, что все элементы из обоих списков соединяются вместе, при этом более короткий список повторяется по мере необходимости.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3