python中一些好用的内置函数(持续更新)
python中有很多内置函数,不像print那么广为人知,但他们却异常强大,用好了可以大大提高代码效率。本文收集了一些博主认为比较好用的内置函数。
- set():当需要对一个列表进行去重操作时,set()函数就派上用场了。
a = [1,2,3,4,56,2,3,4,9,1]
print(set(a))
# 输出{1, 2, 3, 4, 9, 56}
set([iterable])用于创建一个集合,集合里的元素是无序且不重复的。
集合创建以后可以使用并集、交集、差集运算。
a.union(b) # 输出:{'G', 'n', 'm', 'o', 'd', 'g', 'r', 'i'}
a.intersection(b)# 输出:{'o'}
a.difference(b)# 输出:{'G', 'd'}
- eval():eval(str_expression)作用是将字符串转换成表达式,并且执行。
a = eval('max([1,2,3,4,5,6])')
print(a)
# 输出 6
用该函数还可以写一个四则运算器,输入字符串公式,直接产生结果:
x = input()
print(eval(x))
# 在命令行输入1+2,并按回车,输出3
- sorted():在处理数据过程中,我们经常会用到排序操作,比如将列表、字典、元组里面的元素正/倒序排序。这时候就需要用到sorted()函数,他可以对任何可迭代对象进行排序,并返回列表。
# 对列表升序操作
a = sorted([1,9,7,3,5,4,6])
print(a)
# 输出:[1, 3, 4, 5, 6, 7, 9]
# 对元组倒序操作
a = sorted((1,9,8,7,3,4), reverse=True)
print(a)
# 输出:[9, 8, 7, 4, 3, 1]
# 使用参数key,根据自定义,按字符串长度来排序:
a = ['dog', 'monkey', 'bird', 'elephant']
b = sorted(a, key=lambda x:len(x))
print(b)
# 输出:['dog', 'bird', 'monkey', 'elephant']
- reversed():如果需要对序列的元素进行反转操作,reversed()函数能够派上用场。reversed()函数接受一个序列,将序列里的元素反转,并最终返回迭代器。
a = reversed('good morning')
print(list(a))
# 输出:['g', 'n', 'i', 'n', 'r', 'o', 'm', ' ', 'd', 'o', 'o', 'g']
- map():作文本处理的时候,假如要对序列里的每个单词进行大写转化操作。这个时候,map()函数就能派上用场了。
a = ['dog', 'monkey', 'bird', 'elephant']
b = map(lambda x:x.upper(), a)
print(list(b))
# 输出:['DOG', 'MONKEY', 'BIRD', 'ELEPHANT']
map()函数会根据提供的函数,对指定的序列做映射,最终返回迭代器。
也就是说map()函数会把序列里的每一个元素用指定的方法加工一遍,最终返回给你加工好的序列。
- reduce():前面说到对列表里的每个数字做平方处理,用map()函数。那我想将列表里的每个元素相乘,该怎么做呢?这时候就需要用到reduce()函数。
from functools import reduce
a = [1,2,3,4,5,6]
b = reduce(lambda x,y:x*y, a)
print(b)
# 输出:720
reduce()会对参数序列中元素进行累积。
第一、第二个元素先进行函数操作,生成的结果再和第三个元素进行函数操作,以此类推,最终生成所有元素累积运算的结果。
再举个例子,将字母连接成字符串:
from functools import reduce
a = ['m', 'o', 'r', 'n', 'i', 'n', 'g']
b = reduce(lambda x,y:x+y, a)
print(b)
# 输出:morning
- filter():一些数字组成的列表,要把其中偶数去掉,该怎么做呢?
a = [1,2,3,4,5,6,7,8,9]
b = filter(lambda x:x%2!=0, a)
print(list(b))
# 输出:[1, 3, 5, 7, 9]
filter()函数轻松完成了任务,它用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器。filter()函数和map()、reduce()函数类似,都是将序列里的每个元素映射到函数,最终返回结果。
我们再试试,如何从许多单词里调出包含字母o的单词。
a = ['dog', 'cat', 'monkey', 'elephant', 'donkey', 'duck']
b = filter(lambda x:'o' in x, a)
print(list(b))
# 输出:['dog', 'monkey', 'donkey']
- enumerate():我们可以用该函数同时打印出序列里的元素以及对应的索引值。
a = ['dog', 'cat', 'monkey', 'elephant', 'donkey', 'duck']
for i,j in enumerate(a):
print(i,j)
# 输出:
0 dog
1 cat
2 monkey
3 elephant
4 donkey
5 duck
enumerate翻译过来是枚举的意思,所以说enumerate()函数用于对序列里的元素进行顺序标注,返回(元素、索引)组成的迭代器。
再举个例子,对字符串进行标注,返回每个字母和其索引。
a = enumerate('good morning')
print(list(a))
# 输出:[(0, 'g'), (1, 'o'), (2, 'o'), (3, 'd'), (4, ' '), (5, 'm'), (6, 'o'), (7, 'r'), (8, 'n'), (9, 'i'), (10, 'n'), (11, 'g')]