Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x dropwhile()返回值_Python 3.x_Itertools - Fatal编程技术网

Python 3.x dropwhile()返回值

Python 3.x dropwhile()返回值,python-3.x,itertools,Python 3.x,Itertools,你能帮我理解这个返回值背后的机制吗- with open('zones_list.txt') as fin: print(dropwhile(lambda L: '21:33:00:02:ac:07:e9:ea' not in L, fin)) print(list(dropwhile(lambda L: '21:33:00:02:ac:07:e9:ea' not in L, fin))) 结果: <itertools.dropwhile object at 0x0000

你能帮我理解这个返回值背后的机制吗-

with open('zones_list.txt') as fin:
    print(dropwhile(lambda L: '21:33:00:02:ac:07:e9:ea' not in L, fin))
    print(list(dropwhile(lambda L: '21:33:00:02:ac:07:e9:ea' not in L, fin)))
结果:

<itertools.dropwhile object at 0x0000024EFD4E2200>
['port-wwn (vendor)           :10:00:00:90:fa:a0:4f:aa (Emulex)    \n', 'node-wwn                    :20:00:00:90:fa:a0:4f:aa\n', 'class                       :3\n', 'node-ip-addr                :0.0.0.0\n', 'ipa                         :ff ff ff ff ff ff ff ff\n', 'fc4-types:fc4_features      :\n', 'symbolic-port-name          :\n', 'symbolic-node-name          :\n', 'port-type                   :N \n', 'port-ip-addr                :0.0.0.0\n', 'fabric-port-wwn             :20:06:8c:60:4f:63:bb:f0\n', 'hard-addr                   :0x000000\n', 'permanent-port-wwn (vendor) :00:00:00:00:00:00:00:00             \n', 'connected interface         :fc1/6\n', 'switch name (IP address)    :c3-cs9148-06 (15.112.40.103)\n', '\n', 'Total number of entries = 189\n', '\n']

Process finished with exit code 0

['port-wwn(供应商):10:00:00:90:fa:a0:4f:aa(Emulex)\n',节点wwn:20:00:00:90:fa:a0:4f:aa\n',类:3\n',节点ip地址:0.0.0.0\n',ipa:ff ff ff ff ff ff ff ff\n',fc4类型:fc4\u功能:\n',符号端口名:\n',符号节点名:\n',端口类型:n\n',port-ip-addr:0.0.0\n',结构端口wwn:20:06:8c:60:4f:63:bb:f0\n',硬地址:0x000000\n',永久端口wwn(供应商):00:00:00:00:00:00\n',连接接口:fc1/6\n',交换机名称(ip地址):c3-cs9148-06(15.112.40.103)\n','\n','项目总数=189\n','\n']
进程已完成,退出代码为0
问题: 第一次打印时在对象处提供一个值。 第二次打印时,打印一个列表,该列表从“出现故障的地方”迭代到文件末尾

帮助我理解差异,第一次打印也应该给出系列中的对象值,对吗?为什么它只停留在一个对象值上? 列表是一个构造吗?哪一个会自动迭代

谢谢,
Surendra

关于列表的说法是正确的,在构造列表时,该列表将自动耗尽迭代器。itertools对象是一个迭代器,并且是惰性计算的,这意味着它在需要解压之前不会解压任何值。