петля над 2 списками, повторяя кратчайший до конца самого длинного

Я уверен, что есть простой и понятный способ сделать это, но я искал Google и читал документы, и я просто ничего не могу найти.

Этого я хочу достичь:

la = ['a1','a2','a3','a4'] lb = ['b1','b2'] result = ['a1_b1','a2_b2','a3_b1','a4_b2'] 

У меня есть список дат, и у некоторых из них есть что-то на нем. Затем у меня есть гораздо больший список дат, и я хочу как можно больше разложить наименьший список в более крупный список. Вероятно, для этого потребуется какой-то цикл, поскольку мне нужен доступ к датам в более крупном списке для конечного результата.

По какой-то причине я просто не вижу хорошего способа сделать это.

3 Solutions collect form web for “петля над 2 списками, повторяя кратчайший до конца самого длинного”

Пытаться

 result = ["_".join((i, j)) for i, j in itertools.izip(la, itertools.cycle(lb))] 

Предполагая, что la длиннее lb :

 >>> import itertools >>> [x+'_'+y for x,y in zip(la, itertools.cycle(lb))] ['a1_b1', 'a2_b2', 'a3_b1', 'a4_b2'] 
  • itertools.cycle(lb) возвращает циклический итератор для элементов в lb

  • zip(...) возвращает список кортежей, в которых каждый элемент соответствует элементу в la связанному с соответствующим элементом в итераторе.

Предполагая, что la – ваш самый длинный список

 la = ['a1','a2','a3','a4'] lb = ['b1','b2'] len_lb = len(lb) result = [("_".join((elem_a, lb[index % len_lb]))) for index, elem_a in enumerate(la)] 
  • enumerate будет перебирать список и возвращать кортеж (index, elem at index)

  • List Consrehension , т. Е. [ ] Создаст список «на лету».

  • % является модульным оператором. Я не уверен, что сравнивается с itertools.cycle с точки зрения производительности.

  • str.join () обычно является предпочтительным способом объединения строк в python, поскольку он имеет лучшую производительность, чем использование +

  • OOP python - удаление экземпляра класса из списка
  • Список не отображается во время сортировки
  • Поверните 2D-матрицу / список Python в таблицу
  • вложенные списки
  • Передать список в качестве аргумента для модуля Python C?
  • В чем разница между `sorted (list)` vs `list.sort ()`? питон
  • Значения Python для нескольких списков в одном понимании списка
  • Фильтровать список словарей
  • Python - лучший язык программирования в мире.