day18 内置函数,匿名函数

内置函数
1.divmod() 值是整除数和取余,值是一个元组,
多用于 分页,即101条数据的时候,如果要每页10条,我们要把他分成11页
最后一页1条数据。就可以用divmod()
print(divmod(5,2))
(2, 1)
2.round() 取小数点后几位,4舍5入
print(round(2.251651612,3))
2.252
3.pow() 幂运算
即2的3次方,减去5
print(pow(2,3,5)) #值为3
4.sum()求和.
内部必须是一个可迭代对象。
后面加的值是开始值,比如50,那么就从50开始加前面列表的数
print(sum([1,2,3,4,5],50)) #值为65
可以用作算利息,
print(sum([1,2,3,4,5]),"本钱")
5.abs()
取绝对值,即负数的绝对值也是正数
print(abs(-6))
6.min(), max():
可以接收散列的值,和可迭代的对象
key是一个函数名,判断的结果根据函数的返回值来确定
defult 如果可迭代对象为空,设置默认最小值
print(min([],key=abs,default=1))  #输出为1
print(max([1,2,3,4,-5],key=abs))  #abs函数执行后-5变成5,所以结果为-5
7.reversed() 反转,返回的是一个迭代器。所以要接收。
print("".join(list(reversed("asdfg"))))
ret = reversed([1,2,3,4])
ret = reversed(range(0,20))
8.slice()  切片
l = [1,2,3,4,5]
print(l[:3])  #语法糖
l = [1,2,3,4,5]
my_slice = slice(1,5,2)
print(l[my_slice])   #l[1:5:2]
9.format()  最常用的功能就是,对齐,空白默认填充空格
print(format('test', '<20')) #左对齐
print(format('test', '>20')) #右对齐
print(format('test', '^20')) #剧中
10、bytes()  字符串转成字节码,多用于传输,储存
传输过去的是uncode 所以还要编译成 对应编码,
s = 'alex'
by = bytes(s,encoding='utf-8')
print(by)
print(by.decode('utf-8'))
11.bytearray()
改一个数据中一个字符的时候 ,不会在内存中重新创建新的数据,节省内存
array  ==  数组
alex  [a,l,e,x]
s = 'alex'
ret = bytearray(s,encoding='utf-8')
print(id(ret))
ret[0] = 65
print(ret,id(ret))
s = ret.decode('utf-8')
12.memoryview
必须在bytes下用
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))
13.ord() , chr()  , ascii().
三个编码相关的转换函数
print(ord('A')) #65
print(chr(97)) #a
print(ascii('你好'))#'\u4f60\u597d'
14.repr()
能直接按照print里的样子打印出来
print(123)
print('123')
print(repr('123'))#'123'
inp =input('>>>')   #123
print(repr(inp))
print('你好 :%s'%('alex'))
print('你好 :%r'%('alex'))#你好 :'alex'
15.all(),any()
print(all([1,22,'',4])) #and 全是True才返回True
print(any([1,'',(),None]))#or 有一个True就返回True
16.zip()
将对应的元素缝合成一个元组,数量按照最少的一个取
l = (12,3,4,5,6,7)
l2 = ('a','b','c','d')
l3 = [9,8,7]
ret = zip(l,l2,l3)
for i in ret:
    print(i)
# 12, 'a', 9)
# (3, 'b', 8)
# (4, 'c', 7)
17.sorted()
排序,
l = [1,34,3,-5864,5,-1236,7]

print(sorted(l))#[-5864, -1236, 1, 3, 5, 7, 34]
print(sorted(l,key=abs))#[1, 3, 5, 7, 34, -1236, -5864]

l = [[1,2],[3,4,5,6],(7,),'123']
print(sorted(l,key=len))#[(7,), [1, 2], '123', [3, 4, 5, 6]]
匿名函数 —— lambda表达式
#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

一句话的python
#三元运算
#各种推导式、生成器表达式
#lambda表达式
#这段代码
def calc(n):
    return n**n
print(calc(10))
 
#换成匿名函数
calc = lambda n:n**n
print(calc(10))

t1 = (('a'),('b'))
t2 = (('c'),('d'))
print(list(zip(t1,t2)))

print(list(map(lambda t:{t[0]:t[1]} ,zip(t1,t2))))

print([{i[0]:i[1]} for i in zip(t1,t2)])

test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
l=[3,2,100,999,213,1111,31121,333]
print(max(l))

dic={'k1':10,'k2':100,'k3':30}


print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])])

可以匿名存在和别的函数合作的时候

posted @ 2017-09-08 19:20  mendax  阅读(76)  评论(0)    收藏  举报