我想创建一个 Python 函数,它可以接收字母并输出给定字母的成对比较。
例如,如果我的函数名为 pairwise_letters()
,那么它的行为应如下所示:
>>> pairwise_letters('AB')
AB
>>> pairwise_letters('ABC')
AB BC
AC
>>> pairwise_letters('ABCD')
AB BC CD
AC BD
AD
>>> pairwise_letters('ABCDE')
AB BC CD DE
AC BD CE
AD BE
AE
>>> pairwise_letters('ABCDEF')
AB BC CD DE EF
AC BD CE DF
AD BE CF
AE BF
AF
...
回答1
使用 https://docs.python.org/3/library/itertools.html#itertools.combinations 获取每个配对。默认情况下, itertools.combinations()
输出一个可迭代的元组,您需要对其进行一些处理才能将其转换为字符串列表:
from itertools import combinations
def pairwise_letters(s):
return list(map(''.join, combinations(s, 2)))
print(pairwise_letters("ABC"))
这输出:
['AB', 'AC', 'BC']
回答2
这个函数的行为是否符合您的预期?:
def pairwise_letters(s):
for i in range(len(s)):
print(*[''.join(j) for j in zip(s, s[i+1:])], sep=' ')
pairwise_letters('ABCDEF')
'''
AB BC CD DE EF
AC BD CE DF
AD BE CF
AE BF
AF