网站策划资料方案,天津优化公司,discuz注册,大型网站故障python中list, str#xff0c;truple, dict都是可以被迭代的#xff0c;但他们不是迭代器。why?list/truple/map/dict这些数据的大小是确定的#xff0c;我们可以准确知道他们的size。迭代器不知道要执行多少次#xff0c;所以可以理解为不知道有多少个元素#xff0c;每…python中list, strtruple, dict都是可以被迭代的但他们不是迭代器。why?list/truple/map/dict这些数据的大小是确定的我们可以准确知道他们的size。迭代器不知道要执行多少次所以可以理解为不知道有多少个元素每调用一次next()就会往下走一步是惰性的。判断是不是可以迭代用Iterablefrom collectionsimport Iterableisinstance({}, Iterable) --Trueisinstance((), Iterable) --Trueisinstance(100, Iterable) --False凡是可以for循环的都是Iterable判断是不是迭代器用Iteratorisinstance({}, Iterator) --Falseisinstance((), Iterator) --Falseisinstance( (xfor xin range(10)), Iterator) --True凡是可以.(next)的都是Iterator.备注集合数据类型如listtrupledictstr都是Itrable不是Iterator但可以通过iter()函数获得一个Iterator对象Python中的for循环就是通过next实现的参考资料https://www.jianshu.com/p/c523b4a8be6c