<p>您可以使用下面的列表理解,使用<code>map</code>和<code>eval(...)</code>作为:</p>
<pre><code>import ast
Users = ['Protein("SAHDSJDSFJH"), {"id": "s1"}',
'Protein("ACGTWZJSFNM"), {"id": "s2"}',
'Protein("ABHZZEQTAAB"), {"id": "s3"}']
new_list = [y for x in map(eval, Users) for y in x]
</code></pre>
<p>其中<code>new_list</code>将保存值:</p>
^{pr2}$
<p>PS:注意,在作用域中应该存在一个类定义<code>Protein</code>,它的<code>__init__</code>需要一个字符串变量作为参数,<code>__repr__</code>函数以您需要的格式显示{<cd4>}的对象。例如:</p>
<pre><code>class Protein:
def __init__(self, x):
self.x = x
def __repr__(self):
return 'Protein("%s")' % self.x
</code></pre>
<p><strong>注意</strong>:在Python代码中使用<code>eval</code>不是一个好的实践。您不应该将其用于实时应用程序,但是在家庭工作中使用它是可以的(如果是这样的话)。查看:<a href="https://stackoverflow.com/questions/1832940/why-is-using-eval-a-bad-practice"><em>Why is using 'eval' a bad practice?</em></a>了解详细信息。在</p>
<p><strong>编辑:</strong>根据操作员的评论,而不是使用:</p>
<pre><code>users.append('Protein (" ' +dsspSeqList[i]+ ' ", {"id" : "s' +str(i +1)+ ' "}) ')
</code></pre>
<p>您应该使用:</p>
<pre><code>users.append(Protein(dsspSeqList[i], {"id" : "s{}".format(i +1)}))
</code></pre>
<p>这样就不需要<code>eval</code>函数。但<em>注</em>部分仍然适用。在</p>