当前位置: 首页 > news >正文

python -day7

补:

pass 语句

Python pass是空语句,是为了保持程序结构的完整性

pass 不做任何事情,一般用做占位语句

eg;

if 1:pass;

 if 后面要有语句,如果什么都不需要,就可以用pass语句做占位语句,保证程序结构的完整性。

基础语法已经学完,尝试写些小东西;

eg:斐波那契数列

n1=0;
n2=1;
n=0;
n3=0;
while n<10:n3=n1+n2;print(n3);n1=n2;n2=n3;n=n+1;

运行结果如下:

或者:

n1=0;
n2=1;
n=0;
n3=0;
while n<10:n1,n2=n2,n1+n2; #这个先完成等式右边的运算,再赋值给等式左边的变量n=n+1;    print(n2,end=" ");

运行结果

推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 推导式是一种强大且简洁的语法,适用于生成列表、字典、集合和生成器

在使用推导式时,需要注意可读性,尽量保持表达式简洁,以免影响代码的可读性和可维护性。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 元组(tuple)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

列表推导式

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]或者 [表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res:列表生成元素表达式,可以是有返回值的函数
  • for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中
  • if condition:条件语句,可以过滤列表中不符合条件的值

eg:

#计算 30 以内可以被 3 整除的整数:n=[i for i in range(30) if i%3==0]#range(30)生成0-29的整数序列,if i%3==0判断是否能被3整除,符合条件的整数序列存入n列表
print(n);#过滤掉长度小于或等于3的字符串列表,并将剩下的转换成大写字母:words=["qqq","www","eeee","rrr","tttt","yyyy"];
new_words=[word.upper() for word in words if len(word)>3];
#word.upper()将字符串word转换成大写字母
#len(word)>3判断字符串长度是否大于3,符合条件的字符串序列存入new_words列表
print(new_words);

运行结果:

字典推导式

{ key_expr: value_expr for value in collection }或{ key_expr: value_expr for value in collection if condition }

key_expr:字典的键值

value_expr:字典的键值对应的值

value:从collection中提取的值,它也会被传到,key_expr和value_expr的表示式中。

eg:

#使用字符串及其长度创建字典:
listdemo = ['Google','Runoob', 'Taobao'];
dict1={len(i):i for i in listdemo};
print(dict1);#提供三个数字,以三个数字为键,三个数字的平方为值来创建字典:
n=[2,3,4];
n_dict={i:i**2 for i in n};#*表示乘方运算,**表示幂运算
print(n_dict);

运行结果:

这里可以思考一下为什么dict1这个字典只有一个键和对应的值。

-

-

-

-

-

因为listdemo中的每个字符串的长度都是6,所以在创建dict1时,每个键 i 都是 6,如果键值相同,则只保留最后一个

这里有另一个问题是:如果我想创造的字典键和值来自于不同的序列,应该怎么做?

我查到的是使用 zip()函数,注意 zip 会截断到较短的列表

zip 会“截断到较短的列表”的意思是:zip 只按最短的可迭代对象长度配对,超过最短长度的元素会被丢弃(不会成对出现)。

zip()函数

eg:

#使用n的元素作为键,listdemo的元素作为值来创建字典:
listdemo = ['Google','Runoob', 'Taobao'];
n=[1,2,3,4];
dict1={k:v for k,v in zip(n,listdemo)};#zip函数会截断较短的序列,因此这里k,v的长度为3
print(dict1);

运行结果:

eg:也可以使用索引

#使用n的元素作为键,listdemo的元素作为值来创建字典:
listdemo1 = ['Google','Runoob', 'Taobao'];
n1=[1,2,3,4];listdemo2 = ['Google','Runoob', 'Taobao'];
n2=[1,2,3,4];dict1={k:v for k,v in zip(n1,listdemo1)};#zip函数会截断较短的序列,因此这里k,v的长度为3dict2={n2[i]:listdemo2[i] for i in range(min(len(n2),len(listdemo2)))};#使用索引
#min(len(n),len(listdemo))会返还两个列表中较短的长度print(listdemo1,listdemo2,n1,n2)
print(dict1,dict2);

运行结果:

集合推导式

{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }

他们的这些格式都是很一致的了,只有小部分不同。

eg:

n={i*2 for i in range(5)};
print(n);
print(type(n));

运行结果;

n={i for i in"ancoiasucaiwbauwic" if i not in "abc"};
print(n);

运行结果;

注意:集合是一个无序不重复的序列,内部元素不会重复。

元组推导式(生成器表达式)

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。

元组推导式基本格式:

(expression for item in Sequence )
或
(expression for item in Sequence if conditional )

元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象

关于生成器对象简单问了一下ai:

生成器对象就是一个“惰性的、按需生产的工厂”。

  • 惰性/按需:它不会一次性把所有数据都计算出来并塞进内存,而是你要一个,它才算一个,给你一个。

  • 只能迭代一次:就像售货机里的可乐,掉出来就没了。生成器被遍历一次后,再想 next() 就没东西了,会抛出 StopIteration 异常。

  • 节省内存:这是它最大的优点!当你处理海量数据(比如处理一个几十GB的日志文件,或者从数据库查询百万条记录)时,如果用列表,内存会瞬间爆炸。而用生成器,你永远只在内存中保持当前正在处理的一条数据

个人理解就是生成器对象的内容不会一次全部调入内存,而是你每次使用一次next()函数,他就会给你一个它的内容,同时清除这个内容,然后再次使用,会给你下一个内容,这样会节省内存空间,它类比了一下售卖机(生成器对象),你每次投币(调用next()函数,()内是生成式对象),它就会给你一罐可乐(生成器的内容,这罐可乐给你了,售卖机里面就没有了,也就是声生成式对象里面就没有这个内容了)。

eg:

n=(i for i in range(10));#生成器表达式
print(n);
print(type(n)); 
print(tuple(n));#tuple函数将生成器转换成元组

运行结果:

  generator 就是生成器对象的类型。

http://www.dtcms.com/a/504462.html

相关文章:

  • 解锁AI的“职业技能树“:Claude Skills深度技术解析——从原理到实战的完全指南
  • OpenAI:ChatGPT将开放「成人模式」
  • C程序的核心基石:深入理解与精通函数
  • 网站建设教程赚找湖南岚鸿认 可网站必备功能
  • 阿里巴巴外贸网站首页手机网站布局教程
  • CMOS图像传感器驱动程序原理
  • 移动电商网站设计wordpress 获取文章别名
  • 惠州建设集团网站淘宝上面建设网站安全么
  • 深圳市做网站建设中国响应式网站
  • 双Token机制
  • 网站后台管理模板免费下载WordPress导购模板
  • 简述对网站进行评析的几个方面.网站建设开发设计营销公司厦门
  • php5mysql网站开发实例精讲又拍云 cdn WordPress
  • 宜章泰鑫建设有限公司网站给村里做网站
  • 【学习系列】SAP RAP 10:行为定义-Determinations和Validations
  • 织梦可以做导航网站网络营销的推广方式
  • 建设网站方法wordpress文章显示时间
  • 公司微信网站建设方案模板下载黑白色调网站
  • 中企视窗做网站怎么样今天哈尔滨最新通知
  • 网站域名的所有权网站建设资质备案
  • 网站建设目的主要包括哪些做网站要不要35类商标
  • MySQL 核心数据类型详解与实战案例
  • 郑州做网站公司电话php+mysql网站开发全程实例 pdf
  • 老薛主机做两个网站营销业务应用系统
  • SpringMVC初始
  • 哈尔滨房产信息网官网论坛seo网站
  • 离石网站建设16岁0元开网店赚钱软件
  • 建阳建设局网站建设网站企业运营
  • 基于 Zynq 的目标检测系统软硬协同架构设计(一)
  • 软件工程模块复盘:高频考点清单 + 5 道真题汇总