day14

Python匿名函数

匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。

什么时候使用匿名函数

  • 只用一次
  • 函数逻辑简单
  • 使用匿名函数前尽可能的确定 Python 没有自带类似功能的函数

lambda关键字的使用:

lambda 参数 : 表达式

  • lambda:匿名函数的关键字

  • 参数:函数参数

  • 表达式:返回表达式的结果

    匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

高阶函数

map()函数

描述
map() 会根据提供的函数function对指定的参数序列做映射。参数序列中的每一个元素调用 function 函数,新元素构成一个新列表,返回这个新列表

语法
map(function, iterable, ...)

参数
function -- 函数
iterable -- 一个或多个序列
返回值
Python 2.x 返回列表。

Python 3.x 返回迭代器。

reduce()函数

描述
在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

from functools import reduce
reduce()可以将一个接收两个参数的函数以迭代累积的方式从左到右依次作用到一个序列或者迭代器对象的所有元素上,并允许指定一个初始值。

语法
reduce(function, iterable,st)

参数
function -- 函数
iterable -- 一个序列
st--初始值,可选参数
返回值
迭代的结果

filter()函数

描述
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法
filter(function, iterable)

参数
function -- 判断函数。
iterable -- 可迭代对象。
返回值
返回一个迭代器对象

内置函数:

abs()

返回一个数字的绝对值

print(abs(-89.23))

all()

所有的元素都是True返回True,否则返回False,如果判断对象为空,返回True

lis = [1,3,"dd"," ","   ",""]
print(all(lis))

any()

有一个元素为True就返回True,否则返回False,如果判断对象为空返回False

lis = ["","",False]
print(any(lis))

ascii()

返回一个字符串对象

print(ascii("dd"))
'dd'

bin()

转为2进制

print(bin(3))
0b11

bool()

判断是True还是False

print(bool(0))
False

bytearray()

字节列表

bytes()

byte类型。

callable()

查看对象是否可调用。

def ll():
    print("aaa")
print(callable(ll))
True

chr()

根据编号返回ASCII码表中的对应字符。相反的见ord()

print(chr(97))
print(ord("a"))
a
97

classmethod()

classmethod 是一个装饰器函数,用来标示一个方法为类方法

compile()

将一个字符串编译为字节代码。

str = "3 * 4 + 5"
a = compile(str,'','eval')
print(eval(a))

complex()

把一个数变成复数。

print(complex(4,3))
(4+3j)

delattr()

用于删除属性。

delattr(x, 'foobar') 相等于 del x.foobar。

dict()

把一个数据转为字典

print(dict(a='a', b='b'))

dir()

函数不带参数时,返回当前范围内的变量、方法和定义的类型列表,带参数时,返回参数的属性、方法列表。

divmod()

函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

print(divmod(10,3))
(3, 1)

enumerate()

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列。

seq = ['a','b','c']
for i,k in enumerate(seq):
    print(i,k)
0 a
1 b
2 c

eval()

直接将字符串转为代码执行。只能处理单行代码有返回值,处理多行使用exec()。

print(eval("5-2"))

exec()

和eval()一样,但是可以处理多行代码。eval()可以拿到返回值,exec()拿不到返回值。

filter()

过滤。(map, filter, reduce三剑客)

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

a = filter(lambda x: x % 2 == 0, [1,2,3,4,5])
print(a)
for i in a:
    print(i)

float()

浮点类型。

format()

一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

print("{} {}".format("hello", "world"))   # 不设置指定位置,按默认顺序
print("{1} {0} {1}".format("hello", "world"))  # 设置指定位置

frozenset()

不可变的集合。

getattr()

用于返回一个对象属性值。

globals()

以字典类型返回当前位置的全部全局变量。

hasattr()

判断对象是否包含对应的属性。

hash()

将一串字符变为一串数字的哈希值。

print(hash('abc'))

help()

查看帮助。

hex()

将一个数字转为16进制。

print(hex(19))
0x13

id()

查看内存地址

input()

接收用户输入。

int()

转为整数。

isinstance()

判断一个对象是否是一个已知的类型。

ad = ["address",""]
print(isinstance(ad,list))
True

issubclass()

判断参数 class 是否是类型参数 classinfo 的子类。

iter()

用来生成迭代器。

lst = [1, 2, 3]
print(lst.__iter__())
print(iter(lst))

<list_iterator object at 0x0000000001DDB9E8>
<list_iterator object at 0x0000000001DDB9E8>

len()

查看长度。

print(len("abcd"))

list()

列表。

locals()

返回字典类型的局部变量。

map()

根据提供的函数对指定序列做映射。

mm = map(lambda x:x**2,[1,2,3,4])
print(mm)
for i in mm:
    print(i)

reduce()

python3不在内置函数中 from functools import reduce,python2在内置函数中。

将一个数据集合中的所有数据进行操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

from functools import  reduce

print(reduce(lambda x,y:x+y,[1,2,3,4,5],10))
25

max()

取最大值。

memoryview()

在进行切片并赋值数据时,不需要重新copy原列表数据,可以直接映射原数据内存

min()

取最小值。

next()

返回迭代器的下一个项目。

oct()

将一个整数转为8进制。

open()

打开文件。

ord()

通过字符返回字符在ASCII码表中的位置。相反的见chr()

pow()

返回多少次幂。

print(pow(3,2))

print()

用于打印输出,最常见的一个函数。

print(*objects, sep=' ', end='\n', file=sys.stdout)
print("aa","bb",sep=".") # 设置间隔符

property()

作用是在新式类中返回属性值。

range()

创建一个整数列表。

print(range(0, 10, 3))

repr()

将对象转化为供解释器读取的形式。

print(repr("aa"))
'aa'

reversed()

反向列表中元素。

lis = [1,2,3,4]
lis_new = reversed(lis)
print(lis_new)
for i in lis_new:
    print(i)

round()

返回数字四舍五入值。

set()

变成集合。

setattr()

用于设置属性值。

slice()

函数实现切片对象,主要用在切片操作函数里的参数传递。

sorted()

进行排序。

lis = [1,2,5,3,4]
print(sorted(lis))

str()

转为字符串。

sum()

求和。

super()

用于调用父类的一个方法。

tuple()

变成元组。

type()

查看数据类型

vars()

返回属性和属性值的字典对象。

vars()会打印变量名和变量对应的值,dir()只会打印变量名。

zip()

打包成一个个元组,然后返回由这些元组组成的列表。

a = [1,2,3]
b = [4,5,6]
zip1 = list(zip(a,b))  # 打包为元组的列表
print(zip1)

print(list(zip(*zip1)))   # 与 zip 相反,*zip1可理解为解压,返回二维矩阵式

import()

用于动态加载类和函数 。

上一篇:【Python数据结构与算法笔记day14】2.3. 顺序表的操作


下一篇:day14