一.三元表达式 a = '骑车' res = '好天气' if a == '骑车' else '睡觉' print(res) 睡觉 解析:res = '好天气'        if a == '骑车'           else '睡觉'  ,将一个句子分了三部分.简单的逻辑运算可用这种三元表达式 二.列表解析 gift_list = [] for i in range(10): gift_list.append('礼盒%s'%i) print(gift_list) gift_list1 =…
上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res return wrapper @装饰器名字 #被装饰的函数名字=装饰器名字(被装饰的函数的内存地址) def 被装饰的函数名字(): pass 2, 有参装饰器 def 装饰器名字(参数1,参数2,...): def outter(func): def wrapper(*args,**kwargs)…
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件 特点: 可迭代对象遵循可迭代器协议 访问者不需要关心迭代器内部的结构,仅需通过next()方法…
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================================== 一.三元表达式.列表推导式.生成器表达式 1. 三元表达式 #三元表达式格式: ''' 判定条件? 为真时的结果 : 为假时的结果 ''' # 例 result = 5>3? 1 : 0 ''' 定义函数比较两个值 ''' def max(x, y): if x…
三元表达式 #以下是比较大小,并返回值 def max2(x,y): if x > y: return x else: return y res=max2(10,11) print(res) #三元表达式仅应用于: #1.条件成立返回 一个值 #2.条件不成立返回 一个值 #三元表达式 def max2(x,y): return x if x > y else y print(max(10,11)) #三元表达式 #name='alex' 则返回SB,name=其他,则返回NB name=in…
迭代 什么是迭代 1 重复 2 下次重复一定是基于上一次的结果而来 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码: for (i=0; i<list.length; i++) { n = list[i]; } 可以看出,Python的for循环抽象程度要高于Java的for循…
三元表达式 三元表达式仅应用于: 1.条件成立返回一个值 2.条件不成立返回一个值 res = x if x>y else y print(res) name= input("姓名>>: ") res="sb" if name == "alex" else "nb" print(res) 函数的递归 函数的递归:函数递归调用,即在函数调用过程中, 又直接或间接的调用了函数本身. 直接调用 def foo():…
递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)   -->  l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, ]]]]]]]]]]]]] # 循环的写法, 列表嵌套越多层越麻烦 for i in l: # 推导思路 if type(i) is int: print(i) else: for item in i: if type(item)…
函数的递归:函数在调用阶段直接或者间接的又调用自身 递归的两个阶段: 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都是应该下降的,直接有一个最终的结束条件(这个结束条件是必须的,否则就不会结束,直到到当前递归的最大层数然后报错) 2.递推:一次次往回推导的过程 如何查看当前递归的最大层数: import sys print(sys.getrecursionlimit()) # 如果想自定义最大层数, 也可以对括号中进行传参 二分查看算法:二分算法的推导过程 三元…
1.迭代器 str=['sds','ccc','dw'] lit_1=str.__iter__()#获取迭代器 print(lit_1.__next__())#打印下一个值 # 用while做for的事情 while True: try: print(lit_1.__next__()) except StopIteration: break 2.三元表达式 name='dn' name=' 3.列表解析 li=[] for i in range(10): li.append(i) print(l…
1.三元表达式:如果成立返回if前的内容,如果不成立返回else的内容 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式:l=['egg'+str(i) for i in range(1,11)] print(l) 3.生成器表达式: l=('egg'+str(i) for i in range(1,11) if i >6) for i in l: print(i)…
一.函数递归 1.什么是函数递归:函数的递归调用是函数嵌套的一种特殊形式,在调用一个函数的过程中又直接或者间接地调用该函数本身,称之为函数的递归调用 2.递归调用必须明确的两个阶段: 1.回溯:一次次递归调用下去,应该让每一次重复问题的规模有所减少,直到逼近最终的结果,即回溯阶段一定要有明确的结束条件 2.递推:往回一层一层推算结果 例子: # def age(n): # if n == 1: # return 18 # return age(n-1) + 2 # # # print(age(5…
目录 迭代器 可迭代对象 迭代器对象 总结 三元表达式(三目表达式) 列表推导式 字典生成式 迭代器 可迭代对象 拥有iter方法的对象就是可迭代对象 # 以下都是可迭代的对象 st = '123'.__iter__() lis = [1, 2, 3].__iter__() tup = (1, 2, 3).__iter__() dic = {1: 'one', 2: 'two', 3: 'three'}.__iter__() se = {1, 2, 3}.__iter__() with open…
三元表达式 s = '不下雨' if s == '下雨': print('带伞') if s == '不下雨': print('不带伞') #等效与以下语句 print('带伞' if s == '下雨' else '不带伞') # 三元表达式 函数定义 def login(username,password): #定义login函数 """登陆""" name=input("请输入您的用户名: ").strip() #去除输…
本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象想要得到生成器的值必须要用for或者next,list等来获取 生成器生成器就是一个可迭代对象本质上就是一种数据类型 表现形式有两种 生成器函数: 使用yield 代替 return,但是可以返回多次值 调用之后函数内的代码不执行,返回生成器 每从生成器中取一个值就执行一段,遇到yield就停止 如何从生成器取值: for: 如果没有break就可一直取到最后 next:每次取一个,首次使用…
迭代(iterable):支持每次返回自己所包含一个对象的 iter()得到迭代器,.next()遍历列表. 列表解析:根据已有列表高效生成列表的方式. 生成器(Generator): 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了. 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的…
列表解析是列表类型的方法,这种方法结合了列表的方括弧.for循环.if语句. 用for把处理后的值放入列表: squared = [ x**2 for x in range(4) ] for i in squared: print i 0 1 4 9 [ i*2 for i in [8,-2,5] ] [16,-4,10] 2. 挑选符合要求的值放入列表 sqdEvens = [x**2 for x in range(8) if not x % 2 ] for i in sqdEvens: pr…
一.列表提供的一些方法 1.append():在原值最后追加 li = [11,22,33,44,55,] li.append(99) print(li) li.append('中国') print(li) [11, 22, 33, 44, 55, 99] [11, 22, 33, 44, 55, 99, '中国'] 2.clear():清空列表 li = [11,22,33,44,55,] li.clear() print(li) 3.copy:拷贝,而且是浅拷贝,有返回值 li = [11,…
三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # my_generator()并不会执行函数体,得到的返回值就是生成器对象 # 生成器对象就是迭代器对象 r1 = g_obj. for v in g_obj: print(v) # 2 | 3 推导式 # 列表推导式:[v for v in iterable] dic = {'a': 1, 'b':…
一.生成器 生成器总结:语法上和函数类似:生成器函数和常规函数几乎是一样的.他们都是使用def语句进行定义,差别在于生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值.自动实现迭代器协议:对于生成器,python会自动实现迭代器协议,以便应用到迭代背景种,(如for循环,sum函数).由于生成器自动实现了迭代器协议,所以,我们可以调用它的next方法,并且,在没有值可以返回的时候,生成器自动产生stop iteration异常. 状态挂起:生成器使用yield语句返回一…
一.eval函数 python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) -> value 参数: source:一个Python表达式或函数compile()返回的代码对象 globals:可选.必须是dictionary locals:可选.任意map对象 如果提供了globals参数,那么它必须是dictionary类型:如果提供了locals参数,那么它可以是任意的map对象.…
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实现了迭代协议的对象,(如何实现:对象内部定义了一个__iter__()方法). 3.协议是一种约定,可迭代对象实现迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 4.python种强大的for循环机制: for循环的本质:循环所有对象,全部是…
一. 1.字符串转集合 s = 'hello' se = set(s) print(se) {'e', 'o', 'h', 'l'} 2.列表转集合 l1 = ['hello','python','nice'] se1 = set(l1) print(se1) {'nice', 'python', 'hello'} 3.add:添加元素 s = {1,2,3,4,5,6,} s.add(9) print(s) {1, 2, 3, 4, 5, 6, 9} 4.clear:清空 s1 = {1,2,…
一. 1.根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],222) print(v) {': 222} 2.根据key 获取值,key不存在时,报错:get方法,存在时返回对应值,不存在时返回后面代替值,不会报错 . dic = { "k1":'v1', "k2":'v2' } v= dic.get('k3',1111) print(v) 1111 3.pop:删除并返回值,如果不存在时,返回后面备用的值,不会报错 dic…
要谈列表的复制,我们就要谈到Python的赋值规则 首先我们创建列表a: a = [1,2,3] 通常我们复制一个元素的方法是这样的: b = a #复制元素的一般方法 print(a) print(b) 结果为: [1,2,3] [1,2,3] 通过这行代码,我们固然是创建了一个与列表a相等的列表b,但此时却会出现一个问题: 当我们尝试对新创建的列表b进行排序操作(如倒序操作)时: b.reverse() print(b) 结果为: [3,2,1] 到这里一切看似没啥毛病,实则坑爹的事情已经悄…
一.文件操作b模式 1. # f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错 f = open('test11.py','rb') # b 模式不能指定编码方式 data = f.read() print('直接打印出来:',data) print('解码打印\n',data.decode('utf-8')) f.close() 直接打印出来: b'11111\r\n22222\r\n3333\r\n' 解码打印 11111 22222…
一.文件的读操作 例1 f = open('学习',encoding='utf-8') #首先要打开文件,不然直接读,是读不出来的 data = f.read() #read后的括号里不添加任何东西 print(data) f.close() #读取完了后一定要记得关闭文件,不然内存会一直交互数据占据内存空间,而且不关闭,数据容易丢失,或被别人读取 例2:readline   readable f = open('学习','r',encoding='utf-8') print(f.readabl…
1.abs函数,求绝对值. a = abs(-3) print(a) 返回:3 2.all函数:判断是否是可迭代对象. 官方解释:Return True if bool(x) is True for all values x in the iterable.  If the iterable is empty, return True. '])) #print(all('2','4','9')) #会报错,因为里面不是可迭代对象 print(all('')) #空字符串也是可迭代对象 print…
一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): return i - 1 def map_test(func,array): #此处为重点 ret = [ ] for n in array: re = func(n) ret.append(re) return ret print(map_test(add_one,num)) print(map_…
一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {name}, age : {age}"# v = tempalte.format(name='alex',age=19)v = tempalte.format(**{"name": 'alex','age': 19})print(v)三.列表append.extend.insert索…