这一部分函数包括:
- max、min- 选大小,
- sorted - 排序
- reversed - 逆序
- range - 数列生成,
- enumerate -枚举,
- map - 映射,
- filter - 过滤器
- zip - 打包等函数
- iter、next - 迭代
- any、all
max/max函数
从一组数据中取最大值/取最小值
# max函数有两种参数传递方式
# 第一种:max(args1,args2,args3...,key=func)
# 第二种:max(iter类型, key=func)
max函数举例:
# 多个值中选取最大值
max(1,10,12)
# 返回 12
# 列表中选取最大值的项
# 字符串根据uncode编码值选取大小
max([1,2,3,4])
#返回4
max(["a","b","c","d"])
#返回d
# 字典中选取最大值的项
max({"n":1,"l":3,"z":2})
#返回l
max函数的key使用
###############################################################################
# max函数的key使用 #
# key为一个函数,返回的结果用于排序 #
###############################################################################
# 比如在下面的列表中每一项为一个元组,那么就可以通过key设定使用元组哪一项比较
# 根据元素的第一项选择大小,返回(4,1)项
max([(1,3),(2,1),(4,1)], key=lambda x:x[0])
# 根据元素的第二项选择大小,返回(1,3)项
max([(1,3),(2,1),(4,1)], key=lambda x:x[1])
sorted函数
对可迭代对象成员进行排序
###############################################################################
# sorted 排序 #
# sorted(iterable, *, key=None, reverse=False) #
# 1. iterable - 可迭代对象 #
# 2. key - 与max中key一样,选择排序的键 #
# 3. reverse - 默认False,是否反向排序 #
###############################################################################
lists = [1,3,2,6]
# 默认排序
new_lists = sorted(lists)
print(new_lists)
# [1,2,3,6]
# 字符串排序按照unicode编码值排序
lists = ["a","c","d","b"]
new_lists = sorted(lists)
print(new_lists)
# ["a","b","c","d"]
# 使用key排序
lists = [(1,3),(2,1),(4,1)]
# 根据每个元素的第一个元素排序结果
new_list = sorted(lists, key=lambda x: x[0])
print(new_list)
# [(1, 3), (2, 1), (4, 1)]
# 根据每个元素的第二个元素排序结果
lists = [(1,3),(2,1),(4,1)]
new_list = sorted(lists, key=lambda x: x[1])
print(new_list)
# [(2, 1), (4, 1), (1, 3)]
reversed函数
根据可迭代对象返回一个逆序的生成器,revsered并不是倒着排序,而是按照原来的顺序逆序
# reversed举例
lists = [1,3,5,2,9,7]
new_iterable = reversed(lists)
new_list = list(new_iterable)
print(new_list)
# 输出 [7, 9, 2, 5, 3, 1]
# 可以看到只是逆序,并未排序
range函数
等差数列生成器,实际上是range类型
range(N) - 生成0~N,不包含N的整数序列
range(start, end, step=1): start - 数列起始 end - 数列开区间结束位置 step - 等差,默认为1
示例1-生成等差数列:
number_seq = range(10)
print(type(number_seq))
#输出 range
# 将range类型转换为list类型
lists = list(range(10))
print(lists)
#输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用for语句遍历
for i in range(10):
print(i)
# 依次输出 0 ... 9
示例2-按照步长生成等差数列:
# 默认步长=1
# start、end、step必须为整数类型
range(-10, 0)
# 生成 -10 ~ -1
# 默认步长=2
range(-10, 0, 2)
# 生成 -10, -8, -6, -4, -2
# 默认步长=-2
range(-10, -20, -2)
# 生成 -10, -12, -14, -16, -18
enumerate函数
根据可迭代对象生成枚举数据
通过转换为枚举类型,可以在遍历时使用列表元素索引位置
lists = ["apple", "orange", "banana"]
enum = enumerate(lists)
print(enum)
# <enumerate object at 0x11a57d510>
print(list(enum))
# 枚举就是用数字编号对应原来的序列中字符串值。
# [(0, 'apple'), (1, 'orange'), (2, 'banana')]
# 数字编号开始位置可以指定
lists = ["apple", "orange", "banana"]
# 设定编号从3开始
enum = enumerate(lists, 3)
new_lists = list(enum)
print(new_lists)
# 输出 [(3, 'apple'), (4, 'orange'), (5, 'banana')]
map函数
map函数遍历iterable每个元素,并调用fun函数进行处理
map(func, iterable)
map函数得到一个map对象,这是一个生成器,可以使用遍历语句或者转换为其他序列类型
map函数举例
# map函数举例
lists = [1,2,3,4]
new_map = map(lambda x:x**2, lists)
print(new_map)
# <map object at 0x11f5cf550>
# 将map对象转为list输出
print(list(new_map))
# 输出 [1, 4, 9, 16]
filter函数
过滤器与map
有点像,但是是将iterable
中符合func
筛选规则的元素返回到一个新的序列生成器
filter(func, iterable)
fileter举例
lists = [1,2,3,4,5,6]
# 从lists中挑选偶数
new_lists = filter(lambda x: x%2==0, lists)
print(list(new_lists))
# 输出 [2,4,6]
# filter(func,iterable) 相当于 [item for item in iterable if func(item)]
zip函数
zip函数将多个序列打包在一起
zip(*iterables)
zip自动的将两个序列配对在一起,可以多个序列一起打包,
如果各对列长度不一样,最终的长度由最短的序列决定,多余的被抛弃
zip举例
# zip举例
# 学员编号
student_number = [1,3,5,6]
# 学员姓名
student_name = ["luxp", "wxp", "lxp"]
# 将学员姓名与学号打包组成一个新的序列生成器对象
new_zip = zip(student_number, student_name)
print(list(new_zip))
# [(1, 'luxp'), (3, 'wxp'), (5, 'lxp')]
any函数
如果可迭代对象中有一为True,那么就返回True
# any用于判定列表中是否有一项为True
lists = [0,"",None, True]
print(any(lists))
# True
all函数
所有项为True,就返回True
# all用于判定列表所有项是否为True
# any与all,如果在conda环境下,需要注意numpy中有同名的函数方法,
# 可能运行的是numpy中的any与all,numpy中要求列表中的# 类型必须一致
lists = [0, "", True]
print(all(lists))
# False
讨论区