元组&字典&函数基础
set: 类似dict, 是一组key的集合,不存储value
本质:无序和无重复元素的集合
创建:
创建set需要一个list或者tuple或者dict作为输入集合
重复元素在set中会自动被过滤
s1 = set([1,2,3,4,5,3,4,5,6]) 值为 {1,2,3,4,5,6}
s2 = set((1,2,3,4,5,1,2,3)) 值为 {1,2,3,4,5}
添加
s4 = set([1,2,3,4,5])
s4.add(6)
s4.add(4) 可以添加重复的 但是没有效果
s4.add((7,8,9)) set的元素不能是列表和字典,因为列表和字典是可变的
插入元组 是将元组当成一个元素来看的
插入整个list、tuple、字符串,打碎插入
s5 = set([1,2,3,4,5])
s5.update([6,7,8]) 值为{1,2,3,4,5,6,7,8}
这个插入元素,不会将元组当成一个元素来看
删除
s6 = set([1,2,3,4,5])
s6.remove(3)
遍历
s7 = set([1,2,3,4,5])
for i in s7
print(i)
set没有索引的
交集
s8 = set([1,2,3])
s9 = set([2,3,4])
a1 = s8 & s9
并集
a2 = s8 | s9
类型转换
list -> set
L1 = [1,2,3,4,5,3,4,5]
s1 = set(L1)
tuple ->set
t2 = (1,2,3,4,3,2)
s2 = set(t2)
set - >list
s3 = {1,2,3,4}
l3 = list(s3)
set->tuple
s4 = {2,3,4,5}
t4 = tuple(s4)
迭代器
可迭代对象
导入 from collections import Iteralbe
可以直接作用于for循环的对象统称为可迭代对象(Iteralbe)
可以用isinstance()去判断一个对象是否是可迭代对象
可以直接作用于for的数据类型一般分两种
集合数据类型,如list、tuple、dict、set、string
是generator,包括生成器和带yield的generator function
print(isinstance([],Iterable)) 返回True
迭代器
导入 from collections import Iterator
不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后会抛出一个StopIteration错误表示无法继续返回下一个值
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)
可以使用 isinstance()函数判断一个对象是否是Iterator对象
l = (x for x in range(5))
print(next(1)) 0
print(next(1)) 1
print(next(1)) 2
print(next(1)) 3
print(next(1)) 4
.
.
转成Iterator对象
a = iter([1,2,3,4,5])
print(next(a)) 1
print(next(a)) 2
iter(object,sentinel)
object必须是集合对象,且支持迭代协议
sentinel
如果传递了第二个参数,则object必须是一个可调用的对象(如,函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的next()方法时,都会调用object。
如果next的返回值等于sentinel,则抛出StopIteration异常,否则返回下一个值。
函数
函数概述
认识函数:在一个完整的项目中,某些功能会反复的使用。那么 会将功能封装成函数,当我们要使用功能时候,直接调用函数即可
本质:函数就是对功能的封装
优点:
简化代码结构,增加了代码的复用度(重复使用的程度)
如果想修改某些功能或者调式某个BUG,只需要修改对应的函数即可
定义函数:
格式:
def 函数名(参数列表):
语句
return 表达式
def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始和结束
参数列表(参数1,参数2,.......参数n):
任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者那里获取的信息
冒号: 函数内容(封装的功能)以冒号开始,并且缩进
语句: 函数封装的功能
return: 一般用于结束函数的,并返回信息给函数的调用者
表达式: 即为要返回给函数的调用者的信息
注意:最后的return 表达式,可以不写,相当于return None
函数的调用
格式: 函数名(参数列表)
函数名: 是要使用的功能的函数名字
参数列表: 函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略
函数调用的本质: 实参给形参赋值的过程
函数的参数
实参(实际参数): 调用函数时给函数传递的数据,本质是值
形参(形式参数): 定义函数时小括号中的变量,本质是变量
参数必须按顺序传递,个数目前要对应
函数的返回值
通过return 返回值给调用者
传递参数
值传递
传递的不可变类型
string、tuple、number是不可变的
引用传递
传递的可变类型
list、dict、set是可变的
关键字参数
概念:允许函数调用时参数的顺序与定义时不一致
def myprint(str,age)
print(str,age)
使用关键字参数 myprint(age= 18,str = "xiaoxin")
默认参数
概念:调用函数时,如果没有传递参数,则使用默认参数
def myprint(str=“xiaoxin”,age=18)
print(str ,age) #值为 xiaoxin 18
myprint()
以后要用默认参数,最好将默认参数放到最后
不定长参数
概念:能处理比定义时更多的参数
加了星号(*)的变量存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
def func(name,*arr)
print(name)
for x in arr:
print(x)
func("good","nice","happy","handsome")
.
**代表键-值对参数字典,和 *所代表的意义类似
def func2(**kwargs)
print(kwargs)
func2(x = 1,y =2,z=3) 实参必须为关键字参数
匿名函数
概念:不使用def这样的语句定义函数,使用lambda来创建匿名函数
特定:
lambda:只是一个表达式。函数体比def简单
lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间的参数
虽然lambda是一个表达式且看起来只能写一行,与C和C++内联函数不同
格式 :
lambda 参数1, 参数2, .......,参数n: expression
sum = lambda num1,num2: num1+num2
print(sum(1,2)) 结果为3
元组
tuple
本质:是一种有序集合
特定:
与列表非常相似
一旦初始化就不能修改
使用小括号
创建tuple
格式: 元组名 = (元组元素1,元组元素2,.......,元组元素n)
创建空的元组
tuplel = ()
print(tuplel)
创建带有元素的元组
tuple2 = (1,2,3,"good",True)
print(tuple2)
定义只有一个元素的元组
tuple3 = (1,)
print(tuple3)
元组元素的访问
格式: 元组名[下标] 下标从0开始
tuple4 = (1,2,3,4,5)
tuple4[0]
tuple4[-1] 获取最后一个元素
修改元组
tuple5 = (1,2,3,4,[5,6,7])
tuple5[0] =100 #会报错, 元组不能变
tuple5[-1] [0] = 500 #不会报错 5变成了500
元组不能变,说的是元组里面的元素不能变,但是元组里面存列表等,列表里面的元素是可以改变的
删除元组
tuple6 =(1,2,3)
del tuple6
元组的操作
t7 = (1,2,3)
t8 = (4,5,6)
t9 = t7+t8 生成一个新的元组给t9 ,但t7和t8本身不改变
元组重复
t10 = (1,2,3)
print(t10*3)
判断元素是否在元组中
t11 = (1,2,3)
print(1 in t11)
元组的截取
格式:
元组名[开始下标:结束下标]
从开始下标开始截取,截取到结束下标之前
t12 = (1,2,3,4,5,6,7,8,9)
t12[3:7]
二维元组:元素为一维元组的元组
t13 = ((1,2,3),(4,5,6),(7,8,9))
t13[1] [1] 值为5
元组的方法
len(t13) 返回元组中元素的个数
max(t13) 返回元组中的最大值
min(t13) 返回元组中的最小值
将列表转成元组
list = [1,2,3]
t15 = tuple(list)
元组的遍历
for i in (1,2,3,4,5):
字典
概述:
使用键-值(key-value) 存储,具有极快的查找速度
注意: 字典是无序的
key的特性
字典中的key必须唯一
key必须是不可变的对象
字符串、整数等都是不可变的,可以作为key
list是可变的,不能作为key
字典的创建
dict1 = {"tom":60,"lilei":70}
元素的访问
获取: 字典名[key]
print(dict1["lilei"]) 值为70
print(dict1.get("sunck")) 没有找到 返回None
元素的添加
dict1["hanmeimei"] = 99
dict1["lilei"] = 80
因为一个key对应一个value,所以,多次对一个key的value赋值,其实就是修改值
元素的删除
dict1.pop("tom") tom就被删除了
遍历
for key in dict1:
print(key, dict1[key])
for value in dict1.values(): [60,80,90] 将字典的值取出来
print(value)
for k,v in dict1.items():
print(k,v) 能把字典的元素全部打出来 key和value
和list比较
查找和插入的速度极快,不会随着key-value的增加而变慢
需要占用大量的内存,内存浪费多
list
查找和插入的速度随着数据量的增多而减慢
占用空间小,内存浪费少
set: 类似dict, 是一组key的集合,不存储value
本质:无序和无重复元素的集合
创建:
创建set需要一个list或者tuple或者dict作为输入集合
重复元素在set中会自动被过滤
s1 = set([1,2,3,4,5,3,4,5,6]) 值为 {1,2,3,4,5,6}
s2 = set((1,2,3,4,5,1,2,3)) 值为 {1,2,3,4,5}
添加
s4 = set([1,2,3,4,5])
s4.add(6)
s4.add(4) 可以添加重复的 但是没有效果
s4.add((7,8,9)) set的元素不能是列表和字典,因为列表和字典是可变的
插入元组 是将元组当成一个元素来看的
插入整个list、tuple、字符串,打碎插入
s5 = set([1,2,3,4,5])
s5.update([6,7,8]) 值为{1,2,3,4,5,6,7,8}
这个插入元素,不会将元组当成一个元素来看
删除
s6 = set([1,2,3,4,5])
s6.remove(3)
遍历
s7 = set([1,2,3,4,5])
for i in s7
print(i)
set没有索引的
交集
s8 = set([1,2,3])
s9 = set([2,3,4])
a1 = s8 & s9
并集
a2 = s8 | s9
类型转换
list -> set
L1 = [1,2,3,4,5,3,4,5]
s1 = set(L1)
tuple ->set
t2 = (1,2,3,4,3,2)
s2 = set(t2)
set - >list
s3 = {1,2,3,4}
l3 = list(s3)
set->tuple
s4 = {2,3,4,5}
t4 = tuple(s4)
迭代器
可迭代对象
导入 from collections import Iteralbe
可以直接作用于for循环的对象统称为可迭代对象(Iteralbe)
可以用isinstance()去判断一个对象是否是可迭代对象
可以直接作用于for的数据类型一般分两种
集合数据类型,如list、tuple、dict、set、string
是generator,包括生成器和带yield的generator function
print(isinstance([],Iterable)) 返回True
迭代器
导入 from collections import Iterator
不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后会抛出一个StopIteration错误表示无法继续返回下一个值
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)
可以使用 isinstance()函数判断一个对象是否是Iterator对象
l = (x for x in range(5))
print(next(1)) 0
print(next(1)) 1
print(next(1)) 2
print(next(1)) 3
print(next(1)) 4
.
.
转成Iterator对象
a = iter([1,2,3,4,5])
print(next(a)) 1
print(next(a)) 2
iter(object,sentinel)
object必须是集合对象,且支持迭代协议
sentinel
如果传递了第二个参数,则object必须是一个可调用的对象(如,函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的next()方法时,都会调用object。
如果next的返回值等于sentinel,则抛出StopIteration异常,否则返回下一个值。
函数
函数概述
认识函数:在一个完整的项目中,某些功能会反复的使用。那么 会将功能封装成函数,当我们要使用功能时候,直接调用函数即可
本质:函数就是对功能的封装
优点:
简化代码结构,增加了代码的复用度(重复使用的程度)
如果想修改某些功能或者调式某个BUG,只需要修改对应的函数即可
定义函数:
格式:
def 函数名(参数列表):
语句
return 表达式
def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始和结束
参数列表(参数1,参数2,.......参数n):
任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者那里获取的信息
冒号: 函数内容(封装的功能)以冒号开始,并且缩进
语句: 函数封装的功能
return: 一般用于结束函数的,并返回信息给函数的调用者
表达式: 即为要返回给函数的调用者的信息
注意:最后的return 表达式,可以不写,相当于return None
函数的调用
格式: 函数名(参数列表)
函数名: 是要使用的功能的函数名字
参数列表: 函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略
函数调用的本质: 实参给形参赋值的过程
函数的参数
实参(实际参数): 调用函数时给函数传递的数据,本质是值
形参(形式参数): 定义函数时小括号中的变量,本质是变量
参数必须按顺序传递,个数目前要对应
函数的返回值
通过return 返回值给调用者
传递参数
值传递
传递的不可变类型
string、tuple、number是不可变的
引用传递
传递的可变类型
list、dict、set是可变的
关键字参数
概念:允许函数调用时参数的顺序与定义时不一致
def myprint(str,age)
print(str,age)
使用关键字参数 myprint(age= 18,str = "xiaoxin")
默认参数
概念:调用函数时,如果没有传递参数,则使用默认参数
def myprint(str=“xiaoxin”,age=18)
print(str ,age) #值为 xiaoxin 18
myprint()
以后要用默认参数,最好将默认参数放到最后
不定长参数
概念:能处理比定义时更多的参数
加了星号(*)的变量存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
def func(name,*arr)
print(name)
for x in arr:
print(x)
func("good","nice","happy","handsome")
.
**代表键-值对参数字典,和 *所代表的意义类似
def func2(**kwargs)
print(kwargs)
func2(x = 1,y =2,z=3) 实参必须为关键字参数
匿名函数
概念:不使用def这样的语句定义函数,使用lambda来创建匿名函数
特定:
lambda:只是一个表达式。函数体比def简单
lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间的参数
虽然lambda是一个表达式且看起来只能写一行,与C和C++内联函数不同
格式 :
lambda 参数1, 参数2, .......,参数n: expression
sum = lambda num1,num2: num1+num2
print(sum(1,2)) 结果为3
元组&字典&函数基础的更多相关文章
- 2.9高级变量类型操作(列表 * 元组 * 字典 * 字符串)_内置函数_切片_运算符_for循环
高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- 09-Python入门学习-函数基础与参数
一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
- 《转》Python学习(17)-python函数基础部分
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- python基础03-循环结构及函数基础
循环结构及函数基础 循环结构(for-in) 说明:也是循环结构的一种,经常用于遍历字符串.列表,元组,字典等 格式: for x in y: 循环体 执行流程:x依次表示y中的一个元素,遍历完所有元 ...
随机推荐
- JavaScript 开发的40个经典技巧
首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但===和 ...
- Leetcode812.Largest Triangle Area最大三角形面积
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这 ...
- Leetcode796.Rotate String旋转字符串
给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...
- openjudge dp水题记录
当发现自己竟然不会打dp的时候内心是崩溃的,然后按照一年前的刷题记录刷openjudge,然后发现自己准确率比一年前(刚学信竞两个月时)的准确率低得多,已经没救. 列一下最近打的几道sb题 2985: ...
- celery 动态定时任务探索
环境: celery 4.3 flask python 3.7 linux 需求: 动态添加定时任务,且方便维护. 解决思路: 参考django-celery 或是celery源码,将定时任务配置放置 ...
- TIJ——Chapter Nine:Interfaces
A class containing abstract methods is called an abstract class. If a class Contains one of more abs ...
- HTML5入门指南
1.HTML5到底是什么? HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.目标是取代1999年所制定的HTML 4.01和XHTML 1.0标准,以期能在互联 ...
- Cython保护Python代码
注:.pyc也有一定的保护性,容易被反编译出源码... 项目发布时,为防止源码泄露,需要对源码进行一定的保护机制,本文使用Cython将.py文件转为.so进行保护.这一方法,虽仍能被反编译,但难度会 ...
- XAML 特效
<Window x:Class="WpfApp5.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...
- Laravel / PHP 扩展包视频教程
https://laravel-china.org/courses/laravel-package 每周精选两个以上扩展包进行讲解,涵盖 PHP 和 Laravel 相关的最新.最热.最常用的扩展包. ...