Python在迭代过程中返回字符串而不是列表

地毯

我遇到了这种最意外的行为,我似乎无法解释。我编写了一个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)是一串value ' 311'如果我使用enumerate()遍历,也会发生这种情况pdub如果我使用手动提取此元素pdb[6],则它是一个包含16个元素的普通列表,并且该值' 311'在此列表中无处显示。

这对我来说绝对没有任何意义!

保罗

注意:仅在Python3.X中为true

for i in l[1:](或for i in list(l),只要切片不是惰性的)和for i in lifl是生成器之间的主要区别是,第一个将把整个生成器处理到一个列表中,然后将其发送给for,而第二个将l在处处理一个生成器中的一个元素。时间:

from time import sleep
from multiprocessing import Pool
from random import randint
class Gen:
    def __init__(self, limit):
        self.__l = limit
        self.__t = []
        self.__v = 0

    def __iter__(self):
        return self

    def __next__(self):
        self.__v += 1
        if self.__v +1 >= self.__l:
            raise StopIteration
        print("NEXT:{}".format(self.__v))
        sleep(0.01)
        w = 0
        self.__t.append(self.__v)
        return self.__t[:]

r = Gen(1000)

所以

for i in r:
    sleep(0.2)
    print("--->R:{}".format(i[-1]))

>>> NEXT:1
--->R:1
NEXT:2
--->R:2
NEXT:3
--->R:3
NEXT:4
--->R:4
NEXT:5
...

for i in list(r):
    sleep(0.2)
    print("--->R:{}".format(i[0]))

>>> NEXT:1
NEXT:2
NEXT:3 
NEXT:4
NEXT:5
...
--->R:1
--->R:2
--->R:3
--->R:4
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

拆分字符串并为存储过程中的每个值迭代

在显示过程中,自动包装字典中列表中的字符串值

MySQL 中的 DATE_FORMAT() 在侧边存储过程中返回意外的字符串

如何在MYSQL存储过程中的字符串动态列表中搜索字符串

concat 过程中的字符串值

在Windows上的Mysqldump过程中替换字符串

如何在Python中迭代列表(分割的字符串)-字符串中的x

csv.reader从Requests流中读取:迭代器应返回字符串,而不是字节

如何修复Django File Upload中的“迭代器应返回字符串,而不是字节”

Python - 在迭代过程中锁定值

Python:在字符串中查找子字符串,但返回 True 或 False 而不是索引位置

我的列表中的打印函数返回int值,而不是列表中的字符串

从列表python中的字符串返回值

返回字符串python中单词列表的总数?

在 python 中的字符串格式化过程中,不要让所有参数都被转换

Python中的字符串迭代

我如何在 python 中的字符串处理过程中保留变音符号

防止OrderedDict在迭代过程中将单个字符串值拆分为字符

Python:通过对象而不是字符串进行循环迭代

将URL中的.csv文件读入Python 3.x-_csv。错误:迭代器应返回字符串,而不是字节(您是否以文本模式打开文件?)

将URL中的.csv文件读入Python 3.x-_csv。错误:迭代器应返回字符串,而不是字节(您是否以文本模式打开文件?)

在迭代过程中为循环迭代器设置python

Redshift 在基于 CASE 语句的查询过程中将字符插入到字符串中

Spring Data Mongo 返回列表而不是字符串

将最常见的元素作为字符串而不是列表 python 返回

Python-redis keys()返回字节对象列表,而不是字符串

将python lxml文本作为字符串返回而不是单个项目列表-来自xml

在枚举扩展帮助器中返回枚举列表,而不是字符串

在迭代过程中根据条件创建列表