python的enumerate lambda isinstance filter函数
0x01:filter(function,iterable)
- filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
- 接收两个参数,第一个为函数,第二个为序列(可迭代对象),序列的每个元素作为参数传递给函数进行判断,返回True或False,将返回True的元素放到新列表中。
- 返回值是filter类的一个对象,可以用list函数转化成列表
eg:输出1-100内所有的完全平方数
1 import math 2 def is_sqr(x): 3 return math.sqrt(x) % 1 == 0 4 print(list(filter(is_sqr, range(1, 101))))
输出结果如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
0x02:enumerate(iterable, start)
- 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
- 返回一个enumerate类的对象
- 接受两个参数,第一个是数据对象,第二个是索引开始的位置
1 s = ['a', 'b', 'c', 'c'] 2 print(type(enumerate(s))) 3 for a, b in enumerate(s, start=9): 4 print('下标{}'.format(a), end=' ') 5 print('值{}'.format(b))
输出结果如下:
<class 'enumerate'>
下标9 值a
下标10 值b
下标11 值c
下标12 值c
0x03:isinstance
- 判断一个对象是否为某一数据类型
- 判断子类是否继承与某个父类,isinstance会认为子类属于父类的类型,而type不会。
- 接受两个参数,第一个参数为数据对象,第二个参数为数据类型,或数据类型组成的元祖
1 class A(object): 2 pass 3 class B(A): 4 pass 5 6 b = B() 7 print(isinstance(b, A)) # 判断b是否属于父类A,isinstance返回True,type返回false 8 print(type(b) == A) 9 10 a = 3 11 c = 6 12 print(isinstance(a, int)) # 判断对象是否属于int类型 13 print(isinstance(c, (str, list, tuple, int))) # 判断对象是否属于远足中数据类型中的任一个
输出结果如下:
True
False
True
True
0x04:lambda
- 格式:lambda [parameter_list] : lambda后是参数,如果有多个参数,用 , 隔开, :后是返回值,一般是对出传入的参数的操作或判断
- 使用 lambda 表达式,可以定义简单的单行函数,省去定义函数的过程,不需要使用def关键字,让代码更加简洁。
- 对于不需要多次复用的函数,使用 lambda 表达式可以在用完之后立即释放,提高了性能。
f = lambda x, y, z :x+y+z a = f(1,2,3) print(a)
输出结果:
6
可以理解成使用lambda关键字定义了一个f对象,这个对象需要传入x y z三个参数,并把运算x+y+z后的结果返回给a
(ps:还处于起步的小菜鸡,若有错误,大佬们随时指正。。。。。嘻嘻)
*************************不积跬步,无以至千里。*************************