---恢复内容开始---
案例1:时间下一秒程序
#__author:"吉勇佳" #date: 2018/10/14 0014 #function: timestr=input("请输入标准的时间,如:21:55:23----->>>:23") timeList=timestr.split(":") h = int(timeList[0]) m = int(timeList[1]) s = int(timeList[2]) s += 1 if s == 60: m += 1 s=0 if m==60: h += 1 m=0 if h == 24: h=0 print("%.2d:%.2d:%.2d" %(h,m,s)) #输出 ''' 请输入标准的时间,如:21:55:23----->>>:23:59:58 23:59:59 '''
案例2:迭代器的判断与是否可以使用next
#__author:"吉勇佳" #date: 2018/10/14 0014 #function:迭代器的判断----isinstance from collections import Iterator print(isinstance("",Iterator)) print(isinstance([],Iterator)) print(isinstance((),Iterator)) print(isinstance({},Iterator)) print(isinstance((),Iterator)) print(isinstance((x for x in range(2,10)),Iterator)) l=(x for x in range(2,10)) print(next(l)) print(next(l)) print(next(l)) print(next(l)) ''' 输出: False False False False False True 2 3 4 5 '''
两种不定长参数的方法比较。
案例1:第一种不定长传递参数
def fun1(name,*others): print(name) for i in others: print(i) fun1("jiajia",22,"男","陕西省渭南市合阳县") ''' 输出: jiajia 22 男 陕西省渭南市合阳县 '''
第二种:不定长传递参数,但是必须是传递一个(x=1,y=2)这种的,在内部转化为字典
def fun2(**kwargs): print(kwargs) fun2(a=1,b=2,c=3) ''' 输出: {'a': 1, 'b': 2, 'c': 3} 传入以下时候报错。 fun2(1,2,3) '''
其中:**代表的是键值对的表示方式。
案例2:匿名函数---lambda
(1)lambda表达式1
''' 特点: 1、是一个表达式,比较简洁。 2、不是一个代码块,而是一个表达式,是可以实现一些简繁的逻辑的 ''' # Num1:直接进行传值的方式 print((lambda x,y:x+y)(2,3)) ''' 输出: 5 ''' # num2: # 例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列 list1 = [3,5,-4,-1,0,-2,-6] sorted(list1, key=lambda x: abs(x)) # [0, -1, -2, 3, -4, 5, -6] ''' 同理: 排序函数sorted支持接收一个函数作为参数,该参数作为 sorted的排序依据,这里按照列表元素的绝对值进行排序。 当然,我也可以用普通函数来实现: ''' def foo(x): return abs(x) sorted(list1, key=foo) # [0, -1, -2, 3, -4, 5, -6] # 只不过是这种方式代码看起来不够 Pythonic 而已。
(一)、map函数
map函数代码原型
map(function,sequence):把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。
如果function有两个参数,即map(function,sequence1,sequence2)。
#求1~20的平方 list(map(lambda x:x*x,range(1,21))) #Python2.x使用map(lambda x:x*x,range(1,21)) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]
(二)、filter函数
#求1~20之间的偶数 list(filter(lambda x:x%2 == 0,range(1,21))) #Python2.x使用filter(lambda x:x%2 == 0,range(1,21)) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
(三)、reduce函数
需要引入包:
from functools import reduce
# reduce 函数 from functools import reduce result=reduce(lambda x,y:x+y ,range(1,101)) print(result) ''' 输出: 5050 相当于先把第一个和第二个数相加,得到的结果又给了第一个参数,第二个参数是第三个数,以此类推 '''
---恢复内容结束---