python:部分内置函数与匿名函数

一、内置函数

1,数据类型:int,bool ..........

2,数据结构:dict,list,tuple,set,str 

3,reversed--保留原列表,返回一个反序的迭代器 

reversed()
l =[1,2,3,4,5]
l2 =reversed(l)
print(l2)
4,slice切片 
l =(1,2,23,213,5612,234,43)
sli =slice(1,5,2)
print(l[sli])

#(2,213)

5,format 

print(format('test', '<20'))
print(format('test', '>40'))
print(format('test', '^40'))

6,bytes

#bytes 转换成bytes类型
# 我拿到的是gbk编码的,我想转成utf-8编码
# print(bytes('你好',encoding='GBK')) # unicode转换成GBK的bytes
# print(bytes('你好',encoding='utf-8')) # unicode转换成utf-8的bytes
7,bytearray
b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])
7,zip 
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
    print(i)

8,all

只有有一个为false则返回false

9,any

只要有一个为True则为True

10,filter

执行了filter之后的结果集合一定是《= 执行之前的个数 

#filter只管筛选,不会改变原来的值 

11,map

#执行前后元素的个数不变,值可能发生改 

12,sorted

#用c语言编写。
数据少、短、且要保留原来的列表
二、匿名函数
def add(x,y):
    return x+y

转换成匿名函数为:

add = lambda x,y:x+y
print(add(1,2))

1,找出value值最大的key

dic={'k1':10,'k2':100,'k3':30}
def func(key):
    return dic[key]
print(max(dic,key=func))   #根据返回值判断最大值,返回值最大的那个参数是结果
print(max(dic,key=lambda key:dic[key]))
max([1,2,3,4,5,-6,-7],key=abs)

2,说出代码的最终结果

d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x) #x = 4
x = t(x) #x = 12
x = d(x) #x = 24
print(x)
#--->24

3、

#现有两元组(('a'),('b')),(('c'),('d')),
# 请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

ret = zip((('a'),('b')),(('c'),('d')))
ret = map(lambda t:{t[0]:t[1]},ret)
print(list(ret))
4,以下代码的输出是什么?请给出答案并解释。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
请修改multipliers的定义来产生期望的结果。
def multipliers():
    return (lambda x:i*x for i in range(4))#改为生成器
print([m(2) for m in multipliers()])
 
原文地址:https://www.cnblogs.com/kakawith/p/8204921.html