python - 使用唯一元素创建所有可能的子序列

标签 python algorithm sequence

我有一个表单元素序列:

A111 T112 I113 A114 S115 I116 D117 F118 K119 R120 E121 T122 C123 V124 V125 V126 T112

约束每个元素只出现一次。在上面的序列中,T112 出现了两次。所以我需要创建满足约束的所有可能的子序列,即:

T112 I113 A114 S115 I116

I116 K119 R120 E121 T122 C123 V124 V125 V126 T112

在更复杂的情况下,我有以下必须满足相同约束的序列:

A111 T112 I113 A114 T112 S115 I116 D117 I116 K119 R120 E121 T122 C123 V124 V125 V126

这次 T112 还有 I116 出现了两次。在这种情况下,我需要以下子序列:

A111 T112 I113 A114

I113 A114 T112 S115 I116 D117

D117 I116 K119 R120 E121 T122 C123 V124 V125 V126

当然一个元素可能出现2次以上。有没有不使用遗传算法的有效方法来解决这个问题?

最佳答案

代码:

list  = ["A111", "T112", "I113", "A114", "T112", "S115", "I116", "D117", "I116", "K119", "R120", "E121", "T122", "C123", "V124", "V125", "V126"]

subsequence = []
for item in list:
    if item in subsequence:
        print subsequence
        index = subsequence.index(item)+1
        subsequence = subsequence[index:]
    subsequence.append(item)
print subsequence

将打印:

['A111', 'T112', 'I113', 'A114']
['I113', 'A114', 'T112', 'S115', 'I116', 'D117']
['D117', 'I116', 'K119', 'R120', 'E121', 'T122', 'C123', 'V124', 'V125', 'V126']

关于python - 使用唯一元素创建所有可能的子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480723/

相关文章:

python apscheduler,运行作业的更简单方法?

python - 根据定义的依赖关系对对象进行排序的干净算法?

arrays - 复杂度为 O(log n) 的搜索算法,UNSORTED 列表/数组

java - request.getParameterNames() 的顺序

python - RobotFramework 使用整数值而不是字符串创建字典

python - 如何搁置整数键?

python - PyQt:在QMessageBox之后退出QSystemTrayIcon程序

java - 对于矩阵运算,为什么 "ikj"比 "ijk"快?

python - Pandas 在列中查找序列或模式

java - 使用AtomicLong生成ID,如何每天从0开始