我遇到了这种我似乎无法解释的最出人意料的行为。我编写了一个Python函数,将PDB文件(蛋白质结构的原子坐标)解析为列表列表,例如:
[
['ATOM ', ' 1700', ' N ', ' ', 'VAL', ' B', ' 11', ' ', ' ', matrix([[-19.164, -27.781, -11.31 ]]), ' 1.00', ' 18.57', ' ', ' ', ' N', ' '],
...
]
当我按如下方式遍历列表时:
for line in pdb[:50]:
print line, len(line), type(line)
我按预期得到每个元素,每个列表中有16个元素。你知道吗
但是,如果我运行以下命令:
for line in pdb:
print line, len(line), type(line)
第6行(编号为0)是值' 311'
的字符串。如果使用enumerate()
在pdub
上迭代,也会发生这种情况。如果我使用pdb[6]
手动提取这个元素,那么它是一个包含16个元素的普通列表,并且值' 311'
不会出现在这个列表中。你知道吗
这对我来说毫无意义!你知道吗
注意:仅在Python3.X中为真
for i in l[1:]
(或者for i in list(l)
,只要切片不是懒惰的)和for i in l
之间的主要区别是,如果l
是一个生成器,第一个生成器将把整个生成器处理成一个列表,然后将它发送给for
,而第二个生成器将处理l
的一个元素:所以呢
以及
相关问题 更多 >
编程相关推荐