Python 罗莎琳德';标准普尔27;按字典顺序排列不同长度的字符串';能把我的结果分类吗?
我试图自己解决另一个Rosalind()问题,但不幸的是我不得不向你寻求帮助 以下是我的方法: 首先,;函数,该函数创建长度为n的输入字符串的所有可能子字符串: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):
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