我想根据列表成员在字符串中的位置对其进行排序。但我也希望他们从最小到最大的长度订购。你知道吗
示例代码:
slist = ['ATSEVSPNSK',
'AVSEHQLLHDK',
'TPGKK',
'LVQQWSVAVFLLSYAVPSCGRSVEGLSR',
'FGSDDEGR',
'PSPNTK',
'NHPVRFGSDDEGR',
'RLVQQWSVAVFLLSYAVPSCGR',
'RAVSEHQLLHDK',
'LVQQWSVAVFLLSYAVPSCGR',
'EQEKK',
'YLTQETNKVETYK',
'RFFLHHLIAEIHTAEIR',
'VETYK',
'GKSIQDLR',
'YLTQETNK',
'FGSDDEGRYLTQETNK',
'VETYKEQPLK',
'GKPGK',
'PSPNTKNHPVR',
'FFLHHLIAEIHTAEIRATSEVSPNSK',
'SIQDLRR',
'AVSEHQLLHDKGK',
'ATSEVSPNSKPSPNTK',
'SIQDLR',
'SVEGLSRR',
'FFLHHLIAEIHTAEIR',
'KEQEK',
'EQPLKTPGK',
'EQPLK',
'NHPVR',
'SVEGLSR']
sequence = 'MQRRLVQQWSVAVFLLSYAVPSCGRSVEGLSRRLKRAVSEHQLLHDKGKSIQDLRRRFFLHHLIAEIHTAEIRATSEVSPNSKPSPNTKNHPVRFGSDDEGRYLTQETNKVETYKEQPLKTPGKKKKGKPGKRKEQEKKKRRTRSAWLDSGVTGSGLEGDHLSDTSTTSLELDSRRH'
这就是我想改进的地方:
slist.sort(key=lambda x: sequences.find(x))
slist
Out[9]:
['RLVQQWSVAVFLLSYAVPSCGR',
'LVQQWSVAVFLLSYAVPSCGRSVEGLSR',
'LVQQWSVAVFLLSYAVPSCGR',
'SVEGLSRR',
'SVEGLSR',
'RAVSEHQLLHDK',
'AVSEHQLLHDK',
'AVSEHQLLHDKGK',
'GKSIQDLR',
'SIQDLRR',
'SIQDLR',
'RFFLHHLIAEIHTAEIR',
'FFLHHLIAEIHTAEIRATSEVSPNSK',
'FFLHHLIAEIHTAEIR',
'ATSEVSPNSK',
'ATSEVSPNSKPSPNTK',
'PSPNTK',
'PSPNTKNHPVR',
'NHPVRFGSDDEGR',
'NHPVR',
'FGSDDEGR',
'FGSDDEGRYLTQETNK',
'YLTQETNKVETYK',
'YLTQETNK',
'VETYK',
'VETYKEQPLK',
'EQPLKTPGK',
'EQPLK',
'TPGKK',
'GKPGK',
'KEQEK',
'EQEKK']
slist
中较大版本的字符串是否排序在sequence
中相同位置开始的字符串的上方或下方,取决于其在slist
中的原始位置。一个例子是'LVQQWSVAVFLLSYAVPSCGRSVEGLSR'
比'LVQQWSVAVFLLSYAVPSCGR'
更靠前,相反的情况也适用于slist
的其他成员,一些较小的字符串由于其在slist
中的原始位置而排序在较大的字符串之上。你知道吗
我想保持我原来的分类方式。但我也希望在slist
的成员中,在sequence
的相同位置开始,较短的字符串排序在较长的字符串之上。你知道吗
有什么好办法吗?你知道吗
Python's default sort is stable,因此可以链接您的排序:
在排序键中包含
len
每个元素相关问题 更多 >
编程相关推荐