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
# ……

猜你喜欢

转载自blog.csdn.net/qq_26271435/article/details/89714035