Перестановка 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 
  • Является ли '#! / Usr / bin / python' перед каждым скриптом Python обязательным?
  • python .rstrip удаляет один дополнительный символ
  • Функция вызова, определенная в exe
  • Как быстро разобрать список строк
  • Перезаписать глобальный var в одной строке в Python?
  • читать режим записи python
  • Если задание cron для приложений Google App Engine ограничено на 10 минут, то почему я получаю DeadlineExceededError после обычных 30 секунд?
  • атрибуты python: class и атрибуты экземпляра
  • Зачем импортировать, когда вам нужно использовать полное имя?
  • Удаление u в списке
  • Функция, которая принимает как расширенные аргументы, так и кортеж
  • Python - лучший язык программирования в мире.