Python 基础学习二
学习视频:黑马程序员
函数
组织好的,可重复使用的,用来实现特定功能的代码段
关键字:def
定义:
def 函数名(传入参数):
函数体
return 返回值
先定义,后使用
没有使用return语句返回数据,函数其实也有返回值,是一个特殊的字面量:None,类型事<vlasss 'Nonetype'>
在 if 判断中,None 等同于 False
函数的说明文档(注释)一般放在函数体之前
函数内的局部变量在函数执行完后就被销毁了
global 关键字,声明当前变量是全局变量
数据容器
list(列表)
变量名 = [元素1,元素2,...,元素n]
变量名=[ ] 变量名=list()
可以为不同的数据类型,支持嵌套
可以用下标索引访问,从前往后从0开始,每次+1, 从后向前从-1开始,每次-1
常用操作(方法):
查找下表:list.index(元素) #返回的是正向索引,不存在会报错
修改指定下标的值:list[index] = 值
插入:list.insert(下表, 元素)
追加元素到尾部:
单个:list.append(元素)
一批:list.extend(其他数据容器),将其他数据容器的内容取出,一次追加到列表尾部
删除元素:
del list[index]
list.pop(index) 取出元素,并删除
list.remove(元素) 删除某元素在列表中的第一个匹配项
list.clear() 清空列表
统计元素在列表中的数量
list.count(元素)
统计列表中全部元素数量
len(list)
tuple(元组)
元组一旦定义完成,就不可修改。可以看成一个只读的list
变量名 = (元素,元素,......,元素)
变量名 = ( )
变量名 = tuple()
定义单个元素元组,在后面加个 ' , ' 区分,如:temp = ("hello" , )
当在元组中定义了一个list时,可以修改这个lsit的内容
str(字符串)
这里的字符串也是一个数据容器,也是不可修改的
支持通过下标索引取值
常用操作:
查找元素下表:str.index("value")
替换(这是得到一个新的字符串): new_str=str.replace(原字符串,新字符串)
分割(返回一个列表,里面是多个字符串):list_str = str.split(分隔字符)
规整:
str.strip() 去除前后的空格和回车
str.strip(str1) 去除前后的str1中包含的的所有字符
计数:str.count(str1) str1出现的次数
长度:len(str)
前面的列表、元组、字符串都是序列(内容连续、有序、支持下表索引),支持一个序列的常规操作——切片
对序列切片操作不会影响序列本身,而是会得到一个新的序列
my_list = [0,1,2,3,5,6,8]
result1 = my_list[1:5] #取第一个到第五个,步长为1,可以省略,步长为2:[1:5:2]
my_tuple = (0,1,2,4,5,8,9)
result2 = my_tuple[:] #起始和结束表示从头到尾,步长为1,可以省略
print(result1)
#[1, 2, 3, 5]
print(result2)
#(0, 1, 2, 4, 5, 8, 9)
当步长为负数时,表示从后向前取,所以前面的两个数是先大的后小的
要取到最后或者最前可以不写空着,如[6::-1],这就代表从第六个开始取,取到最前面这个。
set(集合)
不包含重复元素,是无序的,添加重复元素无效
变量名 = {元素,元素,...,元素}
变量名 = set()
因为无序,所以不能通过下标索引访问,但是其允许修改
常用操作:
添加:set.add()
移除:set.remove(指定元素) #集合中没有会报错
随机取出:set.pop() #随机取出一个,集合中的就去除
清空:set.clear()
取两个集合的差集:set1.difference(set2) 取出set1有而set2没有的,返回一个新集合
消除差集(只保留没有的):set1.difference_update(set2) set2不变,set1删除和set2相同的元素
合并集合:set1.union(set2) 返回一个新集合
计数:len(set)
dict(字典、映射)
变量名 = {key: value,key: value,......,key: value }
变量名 = { } #空字典,不是空集合
变量名 = dict()
无序的,没有下标索引,只能通过key获取value
key和value可以是任意类型(key不能为字典),可嵌套(value为字典)
常用操作:
新增(更新):dict[key] = value
删除:dict.pop(key) 返回对应的value,同时在dict中删除
清空:dict.clear()
获取全部的key:dict.keys()
for 遍历 得到的是 key
计数:len(dict)
小结
数据容器的通用操作:
统计元素个数:len(容器)
最大元素:max(容器) dict返回的是key
最小元素:min(容器)
类型转换:转列表 list(容器);转字符串 str(容器);转元组tuple(容器);转集合 set(容器)
字典转换成其他的会丢失value,不能转换成字典
排序:sorted(容器),排序后的结果是列表
反向排序:sorted(容器, reverse=True)
函数进阶
多个返回值
def test_return():
return 1,2
x,y = test_return()
#按照返回值的顺序,写对应顺序的多个变量接收即可
#变量之间用逗号隔开
#支持不同类型的数据return
如果只是用一个值接收,会得到一个元组,其他情况少了就会报错。
参数传递
正常位置传参:在哪个位置就写那里
关键字传参:键=值 方式 如 有参数 name,age 调用可以写 age=xx , name = xxx 顺序不影响
和位置参数相互使用时,位置参数要在关键字参数前面
缺省参数:可以设置一个默认值,必须放在最后面
不定长参数(可变参数):*args
关键字传递不定长:**kwargs #kw 表示 key word
匿名函数
函数作为参数传递:传递的时逻辑,不是数据
lambda匿名函数:
语法:lambda 传入参数 : 函数体(一行代码)
lambda是关键字,表定义匿名函数
传入参数表示匿名函数的形式参加,如:x , y 表示接受2个形式参数
函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码
函数当作参数传入,和直接在函数里面调用感觉没差,但是有了lambda后,就有很多操作空间了
原文地址:https://www.cnblogs.com/xunzf0402/p/16571267.html
- 祭奠那些年,我弃坑的开源轮子
- 这些奇技浮巧,助你优化前端应用性能
- Stepping.js——两步完成前后端分离架构设计
- 我的职业是前端工程师【十】客户端存储艺术:数据存储与模型
- 【开源】2md:将复制的内容、网页转成 markdown
- React Native 持续部署实践— push 代码构建出新版的 Growth
- 技巧 - 如何好一个 Git 提交信息及几种不同的规范
- React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器
- 微软开源全新的文档生成工具DocFX
- 使用 MimeKit 和 MailKit 发送邮件
- 使用 React Native 重写大型 Ionic 应用后,我们想分享一下这八个经验
- 基于OWin的Web服务器Katana发布版本3
- 【工具推荐】图像界的魔术师 ImageMagick
- 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【剑指Offer】链表中倒数第 k 个节点
- 【剑指Offer】调整数组顺序使奇数位于偶数前面
- 【剑指Offer】复杂链表的复制
- 【剑指Offer】二叉树中和为某一值的路径
- 【剑指Offer】二叉搜索树的后序遍历序列
- 【剑指Offer】Ⅲ. 从上到下打印二叉树
- scRepertoire||单细胞免疫组库分析:R语言应用(二)
- 【剑指Offer】Ⅱ. 从上到下打印二叉树
- 【剑指Offer】I. 从上到下打印二叉树
- C#还能这么玩?“诺基亚大屏独显计算器”来咯!
- 【剑指Offer】栈的压入、弹出序列
- 【剑指Offer】包含min函数的栈
- 【剑指Offer】顺时针打印矩阵
- 从0打造属于自己的windows开发命令终端
- hadoop数据类型及自定义