Python之常用内置函数与匿名函数

# exec和eval均可以让字符串形式的代码执行起来
# exec('print(123)')
# eval('print(123)')
#
# print(eval('1+2+3+4')) # 执行完后有返回值
# print(exec('1+2+3+4')) # 执行完后没有返回值,支持简单流程控制

# 数学运算
# print(abs(-10)) # 绝对值
# print(divmod(10,3)) # 除法-返回商和余数
# print(round(3.3333,2)) # 浮点数四舍五入处理成指定的小数位数
# ----------reversed()  --- 不改变原列表,返回一个迭代器
# lst = [1,2,3,4,5]
# lst.reverse()
# print(lst)
# print(reversed(lst))  # ==> <list_reverseiterator object at 0x00000259193B8438>
# ---------ascii码转化
# print(ord('a'))
# print(ord('你'))
#
# print(chr(98))
# ---------all--判断可迭代对象里是否含有bool值位False的元素
# print(all(['a','','123']))
# print(all([0,2,'hello']))
# print(all([[],2,3,[1,2,'']]))
# ---------any--与all相反,判断可迭代对象里是否有bool为True的元素
# print(any(['',0,[],1]))
# ---------zip----
# lst = [1,2,3,4,5]
# lst1 = ['a','b','c','d','e']
# lst3 = ('*','**',[1,2])
# for i in zip(lst,lst1):
#     print(i)
# for i in zip(lst,lst3):
#     print(i)
# (1, 'a')
# (2, 'b')
# (3, 'c')
# (4, 'd')
# (5, 'e')
# (1, '*')
# (2, '**')
# (3, [1, 2])
# --------filter--筛选出条件为True的值
# def is_odd(x):
#     return x % 2 == 1
# ret = filter(is_odd,[1,4,6,7,9])
# print(ret) # ==> <filter object at 0x0000014FF8E486A0>
# for i in ret:
#     print(i)
# --------map-- 可迭代对象的每一个元素均执行map第一个参数所制定的函数
# def double_count(i):
#     return i**i
# ret = map(double_count,[1,2,3,4,5,6])
# print(ret)
# for i in ret:
#     print(i)
# --------sorted--排序
# lst = [1,-4,6,5,-10]
# lst.sort(key=abs) # 按绝对值排序
# print(lst)
# ret1 = sorted(lst,reverse=False) # 从小到大排
# ret2 = sorted(lst,reverse=True) # 从大到小排
# print(ret1,ret2)
# ret = sorted(lst,key=abs) # 生成一个新列表
# print(ret,lst)
# --------匿名函数
# 格式:函数名 = lambda args1,args2,...argsn:返回值
# sq = lambda x:x*x
# ret = sq(10)
# print(ret)
# -------难点面试题
# 1.现有两元组,('a','b'),('c','d'),使用匿名函数生成列表[{'a':c},{'b':'d'}]
# t1 = ('a','b')
# t2 = ('c','d')
# ret = zip(t1,t2)
# print(ret)
# for i in ret:
#     print(i)
# ret = map(lambda tup:{tup[0]:tup[1]},[tup for tup in ret])
# print(ret)
# for i in ret:
#     print(i)
# print(list(ret))
# 转化为一行
# print(list(map(lambda tup:{tup[0]:tup[1]},[tup for tup in zip(t1,t2)])))
# 2.以下代码输出的是什么,给出答案并解释
# def multipliers():
#     return [lambda x:i*x for i in range(4)] # 列表推导式的for循环在调用函数的时候已经计算完毕生成了四个匿名函数[lambda x:i*x,lambda x:i*x,lambda x:i*x,lambda x:i*x]
# ret = multipliers()
# print(ret)
# for m in ret:
#     print(m(2))

# print([m(2) for m in multipliers()]) # ==> [6, 6, 6, 6]

# def multipliers():
#     return (lambda x:i*x for i in range(4)) # 生成器表达式的for循环在函数调用时并未执行i的取值还是在运行时从0开时计算
# print([m(2) for m in multipliers()])

猜你喜欢

转载自blog.csdn.net/qq_40199698/article/details/87909384