python系统学习Day3

这篇具有很好参考价值的文章主要介绍了python系统学习Day3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

section4 python function

part one:函数的参数

python函数的参数共有五种类型

#位置参数
def power(x):
	return x * x

#默认参数
def power(x, n = 2) #设置默认值(可省略)
	s = 1
	while n > 0:
		n = n - 1
		s = s * x
	return s
	#note
print('''默认参数必须指向不变对象。
由于默认参数是在函数创建时被计算出来的,
可变对象在调用后可能影响到之后函数调用的结果''')

#可变参数
def sum(*num):
	sum = 0
	for n in num:
		sum = sum + n
	return sum
	
	#调用
	sum(1, 2, 3)
	L = [1, 2, 3]
	sum(*L)

#关键字参数
def person(name, age, **kw):
	print('name:', name)
	print('age:', age)
	print('other:', kw)
	# kw指任意个数关键字参数
	
	#调用
	person('Bob', 23, job='Teacher')
	dic = {'job': 'Teacher', 'city': 'Beijing'}
	person('Bob', 24, **dic)

#命名关键字参数,限制特定关键字
def person(name, age, *, city, job):  #注意这里city和job是指关键字
	pass
def person(name, age, *args, city, job): #已有可变参数的不需要加  *,
    print(name, age, args, city, job)
	#关键字参数也可以缺省, 指定初始值就好
	#关键字调用时必须写成key=value的形式,为了解释器能区分位置参数和关键字参数

参数定义的顺序必须是:必选参数, 默认参数, 可变参数, 命名关键字参数, 关键字参数

理解起来有两种分类方式:普通参照位置的参数/、 / 关键字参数, 固定个数的参数 / 可变参数。
位置参照在前,固定个数在前。
部分类型可指定默认值从而实现缺省。

综上,对于任意类型的函数都可以通过类似func(*args, **kw)实现调用

section5 Advanced features

part one:切片

切片对象:list、tumple、strings
切片参数:[x:y:z],起始位置,终止位置,步长。默认值分别为首元素,尾元素,1

>>>L = list(range(100))
>>>L[:10]
>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>L[-10:]
>[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>>L[:10:2]
>[0, 2, 4, 6, 8]
>>>L[:]  #原样复制L

tips about Slice

切片操作通常用在等号右面,不能用在左面
对于字符串,单独取出某个字符同样不能放在等号左面,修改字符串时不能单独拎出来一个进行修改

part two:迭代

python中的迭代抽象程度很高,for循环只要作用于一个可迭代元素就可以正常运行

#字典迭代
for key in d:
	print(key)  #字典默认迭代元素是关键字

for value in d.values():
	pass

for kye, value in d.items():
	pass

#字符串迭代
for ch in 'ABC':
	print(ch)

#对list下标循环
for i, value in enumrate(['A', 'B', 'C'])
	print(i, value)

#同时引用两个变量
for x, y in [(1, 1), (2, 4), (3, 9)]
	print(x, y)

part three:列表生成器

列表生成器list comprehensions,可以用来创建列表,非常强大

#简单生成
>>>[x * x for x in range (1, 11)]
>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 满足特定条件的部分生成
>>>[x * x for x in range(1, 11) if x % 2 == 0]
>[4, 16, 36, 64, 100]
# 对满足不同条件的元素分别处理(需要全覆盖)
>>>[x if x % 2 == 0 else -x for x in range (1,5)]
>[-1, 2, -3, 4]
#if在前必须搭配else, if在后不能搭配else

#两层循环生成全排列
>>>[m + n for m in 'AB' for n in 'XY']
>['AX', 'AY', 'BX', 'BY']

# 依次遍历生成两个变量
d = {'x':'A', 'y':'B'}
>>>[k + '=' + v for k, v in d.items()]

part four:生成器

列表容量有限,我们可以采用另一种存储方式:存储生成器(生成列表的算法)

  • 方法一:将列表生成器的方括号改为圆括号
>>>L = [x*x for x in range(10)]
>>>L
[0, 1, 4, 16, ..., 81]
>>>g = (x*x for x in range(10))   #圆括号--生成器
>>>g
<generator object <genexpr> at 0x1022ef630>
>>>next(g)        #通过next输出生成的下一个元素
0
>>>next(g)
1
>>>next(g)
4
... ...
>>>next(g)      #没有元素后抛出错误
Traceback (most recent call last):
	File "<stdin>", line 1, in <module>
StopIteration
#另一种遍历
>>>g = (x*x for x in range(10)) 
>>>for n in g:
...    print(n)
...
0
1
... ...
81
#不需要关心StopIteration的错误

part five:迭代器

凡是能直接作用于for循环的对象都是Iterable类型
凡是能作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列文章来源地址https://www.toymoban.com/news/detail-828015.html

  • Iterable包括:list tumple dict set str
  • Iterator不包括list dict str
  • Iterable可以通过iter()函数转化为Iterator
from collections.abc import Iterator
isinstance((x for x in range(10)), Iterator)    #Ture

到了这里,关于python系统学习Day3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务学习Day3

    2024年02月20日
    浏览(28)
  • 前端学习——ajax (Day3)

    使用 XMLHttpRequest XMLHttpRequest - 查询参数 XMLHttpRequest - 数据提交 Promise - 三种状态

    2024年02月16日
    浏览(31)
  • 前端学习——JS进阶 (Day3)

    面向过程编程 面向对象编程 (oop) 练习 constructor 属性 对象原型 原型继承 原型链

    2024年02月16日
    浏览(24)
  • 【剑指offer】学习计划day3

      目录 一. 前言  二.替换空格         a.题目          b.题解分析           c.AC代码 三. 左旋转字符串          a.题目         b.题解分析         c.AC代码   本系列是针对Leetcode中剑指offer学习计划的记录与思路讲解。详情查看以下链接: 剑指offer-学习计划htt

    2024年02月13日
    浏览(84)
  • 【C++】day3学习成果:类

    1.自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量 成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件stack.h: 源文件stack.cpp: 主函数main.cpp: 运行结果: 2.自行封装一个循环顺序队列

    2024年02月09日
    浏览(29)
  • 计算机网络 day3 广播风暴 - VLAN - Trunk

    目录 广播风暴: 1.什么是广播风暴? 2.危害: 3.防范 STP生成树协议:(72条消息) 生成树协议 — STP_生成树协议步骤_一下子就醒了的博客-CSDN博客 VLAN: VLAN是什么? VLAN起到的作用: 广播域(Broadcast Domain)是指一个网络中可以接收到同一广播消息的所有设备的集合。 分割广播

    2024年02月12日
    浏览(20)
  • 学习笔记Day3:数据框、矩阵和列表

    要经常检查代码生成的结果,警惕不报错的错误 向量:一维 表格:二维 列表:三维 判断数据结构:class()或is族函数判断,或根据其生成的函数来判断 二维,每列只允许一种数据类型 数据框来源 用代码新建 由已有数据转换或处理得到 读取表格文件 R语言内置数据(iris,

    2024年03月11日
    浏览(68)
  • 网络编程day3-FTP客户端项目

        FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应),这种将命令和数据分开传送的思想大大提高了 FTP 的效率,而其

    2024年02月10日
    浏览(36)
  • Verilog数据类型/常量/变量[学习笔记day3]

    1 数据类型 数据类型是用来表示数字电路中的 数据存储 和 传递单元 。 Verilog HDL中共有19种数据类型,其中 最基本的有4种 : 常:integer型 parameter型 变:reg型 wire型 其他:large, medium, scalared, small, time, tri, tri0, tri1, triand, trior, trireg, vectored, wand, wor等。 2 常量 在程序运行过程中

    2024年02月05日
    浏览(35)
  • 黑马头条项目学习--Day3: 自媒体文章发布

    自媒体后台搭建 ①:资料中找到heima-leadnews-wemedia.zip解压 拷贝到heima-leadnews-service工程下,并指定子模块 执行leadnews-wemedia.sql脚本 添加对应的nacos配置 ②:资料中找到heima-leadnews-wemedia-gateway.zip解压 拷贝到heima-leadnews-gateway工程下,并指定子模块 添加对应的nacos配置 图片上传的

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包