Перестановка Python

Как выполнить следующее в python:

first = ['John', 'David', 'Sarah'] last = ['Smith', 'Jones'] combined = ['John Smith', 'John Jones', 'David Smith', 'David Jones', 'Sarah Smith', 'Sarah Jones'] 

Есть ли способ объединить все перестановки?

4 Solutions collect form web for “Перестановка Python”

itertools.product

 import itertools combined = [f + ' ' + l for f, l in itertools.product(first, last)] 

Не уверен, есть ли более элегантное решение, но это должно работать:

[x + " " + y for x in first for y in last]

product от itertools сделает трюк.

 product(first, last) 

даст ответ генератору со всеми возможными комбинациями first и last . После этого все, что вам нужно сделать, это совместить имя и фамилию. Вы можете сделать это в одном выражении:

 combined = [" ".join(pair) for pair in product(first, last)] 

Это также можно сделать с помощью конкатенации строк:

 combined = [pair[0] + " " + pair[1] for pair in product(first, last)] 

Однако этот метод медленнее, чем конкатенация в интерпретаторе. Всегда рекомендуется использовать метод "".join() поскольку этот код выполняется в C.

Мне не известно о каком-либо способе утилиты python для этого, однако последующие результаты будут одинаковыми:

 def permutations(first, second): result = [] for i in range(len(first)): for j in range(len(second)): result.append(first[i] + ' ' + second[j]) return result 
  • Python: сетевые вызовы перед началом работы в сети
  • Прочитать файл до символа
  • Как я могу установить PYTHONPATH в рыбе?
  • Преобразование Python int в строку байтов большого числа байтов
  • Базовые классы Python разделяют атрибуты?
  • Есть ли способ получить возвращаемое значение функции и проверить, что это «отличное от нуля» в одно и то же время?
  • Facebook webhook делает несколько вызовов для одного и того же сообщения?
  • Colon (:) в индексе списка Python
  • Python - лучший язык программирования в мире.