请稍候,加载中....

数据结构相关函数

这一部分函数包括:

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

 


Python学习手册-