我将如何在 python 中完成以下操作:
first = ['John', 'David', 'Sarah']
last = ['Smith', 'Jones']
combined = ['John Smith', 'John Jones', 'David Smith', 'David Jones', 'Sarah Smith', 'Sarah Jones']
有没有组合所有排列的方法?
我将如何在 python 中完成以下操作:
first = ['John', 'David', 'Sarah']
last = ['Smith', 'Jones']
combined = ['John Smith', 'John Jones', 'David Smith', 'David Jones', 'Sarah Smith', 'Sarah Jones']
有没有组合所有排列的方法?
import itertools
combined = [f + ' ' + l for f, l in itertools.product(first, last)]
不确定是否有更优雅的解决方案,但这应该可行:
[x + " " + y for x in first for y in last]
product
fromitertools
会做的伎俩。
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