Python字符串排列每个排列最多更改2个字母

2024-09-28 05:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在python中创建一个置换生成器,但将更改限制为只有2个字母?你知道吗

示例:

create_perm('cow')

退货

['cwo', 'woc', 'ocw']

但不是'wco',因为这意味着三个字母改变了位置。你知道吗


Tags: 示例create字母ocwpermcowwocwco
1条回答
网友
1楼 · 发布于 2024-09-28 05:16:56

如果只允许更改两个字母,这可以归结为交换两个字母:

from itertools import combinations

def changetwo(s):
    for i,j in combinations(range(len(s)), 2):
        res = list(s)
        res[i], res[j] = res[j], res[i]
        yield ''.join(res)

演示:

>>> list(changetwo('cow'))
['ocw', 'woc', 'cwo']
>>> for x in changetwo('1234'):
...     x
... 
'2134'
'3214'
'4231'
'1324'
'1432'
'1243'

相关问题 更多 >

    热门问题