python基础(11):内置函数与高阶函数

内置函数: 

可以用lamba函数对字典进行排序。(字典没有内置函数,不能用dict.sort()排序)

dic = {'b':5, 'a':3, 'c':4}

# 直接用python函数sorted:
print(sorted(dic))
# output:['a', 'b', 'c']

print(sorted(dic.items()))                                        # 对key排序:
# output:[('a', 3), ('b', 5), ('c', 4)]
print(sorted(dic.items(), key = lambda x:x[1], reverse=True))     # 用lambda函数指定排序元素
# output:[('b', 5), ('c', 4), ('a', 3)]

print(sorted(dic.values()))                                       # 只对值排序
# output:[3, 4, 5]

print(sorted(dic.values(), reverse = True))                       # 只对值逆序
# output:[5, 4, 3]

列表元素为字典时,可以指定字典元素进行排序。

list1 = [
        {'name':'joe', 'age':'18'},
        {'name':'susan', 'age':'19'},
        {'name':'tom', 'age':'17'}
        ]

print(sorted(list1, key = lambda x:x['name']))
# output:[{'name': 'joe', 'age': '18'}, {'name': 'susan', 'age': '19'}, {'name': 'tom', 'age': '17'}]
print(sorted(list1, key = lambda x:x['age']))
# output:[{'name': 'tom', 'age': '17'}, {'name': 'joe', 'age': '18'}, {'name': 'susan', 'age': '19'}]

常用内置函数:

方法描述例子
abs()函数返回数字的绝对值

num = -1

print(abs(num))

# output:1

sorted(list)排序,返回排序后的list

print(sorted(['a','b','','d']))

# output:['', 'a', 'b', 'd']

sum(list)求list元素的和

sum([1,2,3])

# output:6

round(a, b)获取指定位数的小树。a是浮点数,b是要保留的位数

round(3.1415926)

# output:3.14

isinstance(a, b)类型判断,a是要判断的变量,b是类型

num = 1

print(isinstance(num,int))

# output:True

eval()执行一个表达式,或字符串作为运算

eval('1+1')

# output:2

exec()输出python语句

exec('print("Python")')

# output:Python

内置函数可以通过dir(__builtins__)查询。 

高阶函数:

方法描述

map(func, seq[,seq[,seq...]])

- > list

 接收一个函数及多个集合序列,会根据提供的函数对指定序列做映射,然后返回一个新的map对象。

filter(func, seq)

- >  list or tuple or string

用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的filter对象。
reduce(func, seq[, initvalue])对于序列中的所有元素调用func进行数据合并操作,可以给定一个初始值。

map:

例1:

list1 = [1,2,3,4,5]

# map
new_list = map(lambda x:x*2, list1)
print(new_list)
# output:<map object at 0x0000013AB0630128>

print(list(new_list))  # 将map对象转换为list
# output:[2, 4, 6, 8, 10]

# 或者
print([x*2 for x in list1])
# output:[2, 4, 6, 8, 10]

例2:

list1 = [1,3,5,7,9]
list2 = [2,4,6,8,10]

# map
new_list = map(lambda x, y : x*y, list1, list2)
print(new_list)
# output:<map object at 0x0000013AB0630128>

print(list(new_list))  # 将map对象转换为list
# output:[2, 12, 30, 56, 90]
# 即对应元素相乘

# 或者
print([x*y for x,y in zip(list1, list2)])
# output:[2, 12, 30, 56, 90]

filter:

例1:

list1 = [1,3,5,7,9]

# filter
new_list = filter(lambda x : x>4, list1)
print(new_list)
# output:<filter object at 0x0000013AB0692470>

print(list(new_list))  # 将map对象转换为list
# output:[5, 7, 9]

# 或者
print([x for x in list1 if x > 4])
# output:[5, 7, 9]

把上面的filter改成map:
 

new_list = map(lambda x : x>4, list1)
print(list(new_list))  # 将map对象转换为list
# output:[False, False, True, True, True]

所有,map表示映射,filter表示筛选,二者不可互换。

 

reduce:

例:

from functools import reduce

list2 = [2,4,6,8,10]
reduce(lambda x,y:x+y, list2)
# output:30
# x+y: 2+4, 返回6
# x+y: 6+6, 返回12
# x+y: 12+8,返回20
# x+y: 20+20,返回30

reduce(lambda x,y:x+y, list2, 5)
# output:35
# x+y: 5+2, 返回7
# x+y: 7+4, 返回11
# ……

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值