根据模式在字符串中进行排列

Posted

技术标签:

【中文标题】根据模式在字符串中进行排列【英文标题】:Making permutations in string based on a pattern 【发布时间】:2017-07-06 17:09:52 【问题描述】:

输入列表:(仅当 index[1] 有 / 时)

['A', 'dog,big/small;rat,big/small', '12', '21']

返回列表:

['A', 'dog,big;rat,big', '12', '21']
['A', 'dog,small;rat,big', '12', '21']
['A', 'dog,big;rat,small', '12', '21']
['A', 'dog,small;rat,small', '12', '21']

【问题讨论】:

你试过什么?我在这里没有看到 Stack Overflow 类型的问题。 欢迎来到 ***。请阅读并遵循帮助文档中的发布指南。 on topic 和 how to ask 在这里申请。 *** 不是设计、编码、研究或教程服务。 【参考方案1】:

这应该适用于该类型的一般输入字符串:

def permute(s):
    a, b = s.split(',')
    return [a + "," + c for c in b.split('/')]

def traverse(s):
    parts = s.split(';', 1)
    if len(parts) == 1:
        return permute(s)
    else:
        return sum([[k + ';' + l for l in traverse(parts[1])] for k in permute(parts[0])], [])

for s in traverse('dog,big/small;rat,big/small'):
    print ['A', s, '12', '21']

【讨论】:

以上是关于根据模式在字符串中进行排列的主要内容,如果未能解决你的问题,请参考以下文章

将一个给定字符串根据给定的行数,以从上往下从左到右进行 Z 字形排列。

根据字符串中的降序数值排列列表中的项目

根据字符串的不同模式拆分字符串[重复]

Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串

sort命令

SystemUI演示模式 (Demo mode)