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对象是一个迭代器,并且是惰性计算的,这意味着它在需要解压之前不会解压任何值。