Python 罗莎琳德';标准普尔27;按字典顺序排列不同长度的字符串';能把我的结果分类吗?

Python 罗莎琳德';标准普尔27;按字典顺序排列不同长度的字符串';能把我的结果分类吗?,python,string,combinations,rosalind,Python,String,Combinations,Rosalind,我试图自己解决另一个Rosalind()问题,但不幸的是我不得不向你寻求帮助 以下是我的方法: 首先,;函数,该函数创建长度为n的输入字符串的所有可能子字符串: def get_substrings(input_string, l): res_list = [] sub = [] for i in range(len(input_string)): if l+i <= len(input_string): for j in range(i,l+i):

我试图自己解决另一个Rosalind()问题,但不幸的是我不得不向你寻求帮助

以下是我的方法:

首先,;函数,该函数创建长度为n的输入字符串的所有可能子字符串:

def get_substrings(input_string, l):
res_list = []
sub = []
for i in range(len(input_string)):
    if l+i <= len(input_string):
        for j in range(i,l+i):
            sub.append(input_string[j])
    sub = ''.join(sub)
    res_list.append(sub)
    sub = []
res_list = filter(None, res_list)
return res_list
我从Rosalind的“示例输入”中获取数据的代码的结果是:

D
N
A
DD
DN
DA
ND
NN
NA
AD
AN
AA
DDD
DDN
DDA
DND
DNN
DNA
DAD
DAN
DAA
NDD
NDN
NDA
NND
NNN
NNA
NAD
NAN
NAA
ADD
ADN
ADA
AND
ANN
ANA
AAD
AAN
AAA
我的问题:

a) 是否可以按我的结果(罗莎琳德的结果)排序

b) 我的方法正确吗?如果没有,你能给我一些线索(但不是这个问题的解决方案-我想自己解决)

非常感谢

生成可能的子字符串 对于可能的子字符串的生成,我将深入研究
itertools
模块。使用
产品
可以轻松生成一行,返回所有组合

分类 对于排序,我将用
int
s替换字母本身,将此翻译表保存在
dict
enumerate
str.split
是您在这里的朋友

现在您有了一个整数元组列表,可以对其进行排序。据我所知,元组的标准排序顺序很有用

当您有一个元组排序列表时,您只需要向后翻译字符串

已排序(键=) 另一个选项是使用标准字符串排序,并作为
排序的
键=
参数,将替换字符串中每个字母的函数(或lambda)传递到字母表中的位置(输入字符串

这可以通过,
enumerate
dict
comprehension

生成可能的子字符串来完成 对于可能的子字符串的生成,我将深入研究
itertools
模块。使用
产品
可以轻松生成一行,返回所有组合

分类 对于排序,我将用
int
s替换字母本身,将此翻译表保存在
dict
enumerate
str.split
是您在这里的朋友

现在您有了一个整数元组列表,可以对其进行排序。据我所知,元组的标准排序顺序很有用

当您有一个元组排序列表时,您只需要向后翻译字符串

已排序(键=) 另一个选项是使用标准字符串排序,并作为
排序的
键=
参数,将替换字符串中每个字母的函数(或lambda)传递到字母表中的位置(输入字符串


这可以通过,
enumerate
dict
理解来完成。如果你想了解我的解决方案,你可以查看感谢你的努力(github解决方案)和线索,现在我看清楚了。如果你想了解我的解决方案,你可以查看感谢你的努力(github解决方案)和线索,现在我看清楚了。
D
N
A
DD
DN
DA
ND
NN
NA
AD
AN
AA
DDD
DDN
DDA
DND
DNN
DNA
DAD
DAN
DAA
NDD
NDN
NDA
NND
NNN
NNA
NAD
NAN
NAA
ADD
ADN
ADA
AND
ANN
ANA
AAD
AAN
AAA