探索list与iterator的区别及yield的用法

ops/2024/9/24 9:17:40/

1 问题

  1. 探索list与iterator的区别

  2. 探索yield的用法

2 方法

  1. 通过网上学习后了解到 List返回的类型是listlist只会查询一级缓存。

    list()中返回的List中每个对象都是原本的对象。

    查询的时候没遍历一个对象会产生一条sql;


    而iterator这个迭代器返回的类型是iterator,做查询的时候iterate()会先到数据库中把id都取出来,iterate会查询2级缓存,iterate()中返回的对象是代理对象.;

  2. 首先我们要知道什么是yelid,先应该了解generator,iterator,iterable;

Iterables 可迭代的:
代码实现:
mylist = [1, 2, 3]
for i in mylist:
print(i)
e6c5402962d03f89fc64a397085e3e15.png
Iterator 迭代器:
for i in range(5):
print(i) # 0 1 2 3 4
931628cb176eed2b09d0dadbdf91acb0.png
Generator 生成器:
my_generator = (x*x for x in range(10))
for i in my_generator:
print(i) # 0 1 4 9 16 25 36 49 64 81
f81feacc4e3d8630a78f9ecbbb5ad480.png

Yield 产生器:yield相当于return,但它返回的是一个生成器:
代码实现:
def test():
print("First")
yield 1
print("Second")
yield 2
print("Third")
yield 3
my_generator = test() # 创建生成器
print(type(my_generator)) # <class 'generator'>
7be06a362d46cd12ba37b47964ff127f.png
函数使用 yield 作为返回值,那么它就变成了一个生成器函数。与普通函数不同,生成器函数被调用后,函数体中的代码不会立即执行(执行my_generator=test()后不打印任何值),而是返回一个生成器,正如我们前面提到的:generator 是迭代器,而 yield 可以被视为 return。

3 结语

针对list和iterator与yelid用法的问题,提出用代码来实现来验证的方法,通过百度以及在csdn上查询资料了解到这两个问题后,证明该方法是有效的,通过在两个问题我们学习到了list与iterator的区别,以及yelid的函数的可视为return。


http://www.ppmy.cn/ops/93672.html

相关文章

Sketch软件挑战Adobe Illustrator:国产设计软件的竞争力分析

你是否知道如何选择合适的界面设计软件&#xff1f;你是否知道设计美观的用户界面软件有哪些吗&#xff1f;&#xff0c;以及你是否知道良好用户体验的应用程序&#xff0c;需要哪些界面设计软件&#xff1f;根据不同的产品界面功能&#xff0c;所选的界面设计软件也会有所不同…

jenkins 安装以及自动构建maven项目并且运行

在这里找到你对应jdk的版本的jenkins包 War Jenkins Packages 我这里用的使java8,所以下载 https://mirrors.jenkins.io/war-stable/2.60.1/jenkins.war 然后jenkins可以安装到centos系统 在本地windows系统运行命令行 scp C:\Users\98090\Downloads\jenkins.war root@192…

如何确保LLMs在IDE中的交互既高效又安全?

确保LLMs在IDE中的交互既高效又安全&#xff0c;需要考虑多个层面的策略。首先&#xff0c;从系统安全的角度来看&#xff0c;大模型安全综述中提到的风险分类体系和相应的防御策略是关键 。这包括输入模块的风险管理&#xff0c;比如通过设计防御性提示语和对抗性提示语的检测…

微信小程序如何在Tab的icon上显示消息数量

在微信小程序中&#xff0c;可以在Tab的icon上显示消息数量的方法如下&#xff1a; 首先&#xff0c;在app.json文件中&#xff0c;找到对应的tabBar配置&#xff0c;例如&#xff1a; "tabBar": {"list": [{"pagePath": "pages/index/in…

【项目】基于Vue3.2+ElementUI Plus+Vite 通用后台管理系统

构建项目 环境配置 全局安装vue脚手架 npm install -g vue/cli-init打开脚手架图形化界面 vue ui创建项目 在图形化界面创建项目根据要求填写项目相关信息选择手动配置勾选配置项目选择配置项目然后我们就搭建完成啦&#x1f973;&#xff0c;构建可能需要一点时间&#xff0…

安全自动化和编排:如何使用自动化工具和编排技术来提高安全操作效率。(第二篇)

深入理解Kubernetes环境中的安全自动化与编排&#xff08;第二篇&#xff09; 1. 引言 Kubernetes作为现代容器编排平台的主流选择&#xff0c;正在被越来越多的企业用于部署和管理其容器化应用。在Kubernetes环境中实施安全自动化与编排&#xff0c;既能够提升系统的安全性&…

Mariadb数据库本机无密码登录的问题解决

Mariadb数据库本机无密码登录的问题解决 安装了mariadb后&#xff0c;发现Mariadb本机无密码才能登录 百度了很多文章&#xff0c;发现很多人是因为root的plugin设置的值不正确导致的&#xff0c;unix_socket可以不需要密码&#xff0c;mysql_native_password 是正常的。 解…

2024年6月 青少年等级考试机器人实操真题三级

202406 青少年等级考试机器人实操真题三级 一、实操考题 主题&#xff1a;时间可调交通灯&#xff08;三级&#xff09; 器件&#xff1a;Atmega328P主控板1块&#xff0c;交通灯模块2个&#xff08;交通灯A和交通灯B&#xff09;&#xff0c;电位器模块1个及相应辅件。以上模…