回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想根据列表成员在字符串中的位置对其进行排序。但我也希望他们从最小到最大的长度订购。你知道吗</p>
<p>示例代码:</p>
<pre><code>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'
</code></pre>
<p>这就是我想改进的地方:</p>
<pre><code>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']
</code></pre>
<p><code>slist</code>中较大版本的字符串是否排序在<code>sequence</code>中相同位置开始的字符串的上方或下方,取决于其在<code>slist</code>中的原始位置。一个例子是<code>'LVQQWSVAVFLLSYAVPSCGRSVEGLSR'</code>比<code>'LVQQWSVAVFLLSYAVPSCGR'</code>更靠前,相反的情况也适用于<code>slist</code>的其他成员,一些较小的字符串由于其在<code>slist</code>中的原始位置而排序在较大的字符串之上。你知道吗</p>
<p>我想保持我原来的分类方式。但我也希望在<code>slist</code>的成员中,在<code>sequence</code>的相同位置开始,较短的字符串排序在较长的字符串之上。你知道吗</p>
<p>有什么好办法吗?你知道吗</p>