For 循环跟yield区别?

  for循环遍历一个万亿级别的长列表,会将这个列表的全部数据载入到内存中去,如果你的内存很小就会溢出,即使是内存很大,这个操作也是十分占用资源的。

而使用生成器,则会将数据的状态(例如:遍历到列表的哪个位置等等)保存到内存中,每次调用时去读取需要的数据。

生成器是一个内存使用更加友好的结构。从这点解读来看,可能生成器的出现就是为了用时间换空间。

posted @ 2024-01-15 21:24  yongheng999  阅读(50)  评论(0)    收藏  举报