python 强大的内置函数

python是一门十分简洁的语言,它是一门面向对象的语言,但不仅包括了方法,而且还内置一些十分高效而且灵活的函数。函数式编程只关心输入,然后返回输出,不会对一些产生一些中间状态产生。下面是一些十分有用的内置函数

lambda:

匿名函数,当需要实现一个简单的逻辑,lambda匿名函数可以让代码不需要跳转到其他位置的函数中去执行,减少了函数定义的一些代码,使代码更加简洁可读,而且避免了函数名的冲突。这个函数只包含一条语句,这条语句是一条返回值语句。

func=lambda x,y: x+y
print(func(1,2))
# 3
# 相当于
def func(x, y):
    return x+y

匿名函数可以配合其他函数,起到一个很好的效果,如下面的max,min以及filter等等。

min/max

顾名思义,这两个函数返回最大值或最小值。

max(1,2,3)
max([1,2,3])
# 结果都为3

# 获取一个字符串出现最多次的字母,不区分大小写
from string import lowercase
# lowercase = a-z 26个小写字母
max('lowercase', key=string.lower().count)

# 获取数组中唯一的偶数, x&1位操作,偶数的二进制的最后一位都是0,位操作速度快过数字运算
max([1,3,5,6,7,9], key=lambda x: not x&1)

sorted

排序函数,不同于list的sort方法,sorted可以作用于字符串,元组等,返回一个列表

# 降序
string = 'abcdefghijklmn'
new_string = ''.join(sorted(string, reverse=True))
# new_string='nmlkjihgfedcba'

# 把某些相同特征进行分类,如把奇数放在偶数前面
numbers = [1,2,3,4,5,6,7]
new_numbers = sorted(numbers, key=lambda x: x&1)
# new_numbers=[2, 4, 6, 1, 3, 5, 7]

reversed

输出反向序列,不同于list的reverse方法,reversed函数可以作用于字符串,元组等,而且返回的是一个迭代器。

numbers = [1,2,3,4,5,6,7]
for i in reversed(numbers):
    print i,
# 输出: 7,6,5,4,3,2,1

filter(func,seq):

seq中的每个对象会传给func,func返回的值为真(True,非0),那么这个对象就会被加入到一个列表中,遍历完整个seq,filter返回这个列表

# 获取不包含python的字符串
string_list = ['abc', 'python', 'helloworld', 'hellopython']
new_list = filter(lambda x: 'python' not in x, string_list)
# new_list = ['abc', 'helloworld']

# 获取偶数
numbers = [1, 2, 3, 4, 5, 6, 7]
even_numbers = filter(lambda x: not x&1, numbers)
numbers = [2, 4, 6]

map(func, seq)

将seq每个元素传递给func,返回的值加入一个列表,遍历完,然后返回这个列表

# 对每个数进行平方
seq = [1, 2, 3]
seq_square = map(lambda x:x*x, seq)
# seq_square = [1, 4, 9]

列表循环式

在这里插入列表循环式,主要是因为其实filter和map使用的情况比较少,因为它们很多情况下都可以被列表循环式代替,而且列表循环式的可读性比较高

# 上面的几个例子
# 获取不包含python的字符串
string_list = ['abc', 'python', 'helloworld', 'hellopython']
new_list = [string for string in string_list if 'python' not in string]
# new_list = ['abc', 'helloworld']

# 获取偶数
numbers = [1, 2, 3, 4, 5, 6, 7]
even_numbers = [even_number for even_number in numbers if not even_number&1 ]
numbers = [2, 4, 6]

# 对每个数进行平方
seq = [1, 2, 3]
seq_square = [num*num for num in seq]
# seq_square = [1, 4, 9]

reduce(func, seq)

将第一个数和第二个数传给func,返回的值和第三个再一起传给func,直到遍历完。

# 实现累加
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
total = reduce(lambda x,y:x+y, numbers)
# total = 36
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值