函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。Python 中还有一些已经定义好的函数,叫做内置函数。下面就来了解一些常用的内置函数。
1、range() 函数
用于创建不可变的数字序列。它有三个参数,必须都为整数,分别是“start,stop,step”。其中 start 默认等于 0,step 默认等于 1。
range 函数的表达式为:range(start=0,stop,step=1)。
举个实际的例子,range(4) 代表从 0 开始到 4(不含)结束,间隔为 1 的所有元素。
print(list(range(4)) #[0, 1, 2, 3] #从1开始到10结束,间隔为2的所有元素 print(list(range(1, 10, 2)) #[1, 3, 5, 7, 9]
可以使用 range 和 for 循环重复某个操作。
# 循环3次输出"Hello" for i in range(3): print("Hello!")
2、数学相关函数
还有一些常用的数学函数,通过这些函数可以快速实现计算,帮我们告别冗杂的代码。
- abs():返回绝对值。
- divmod():返回商和余数。
- round():四舍五入。
- pow(a, b):求 a 的 b 次幂, 如果有三个参数,则求完次幂后对第三个数取余。
- sum():求和。
- min():求最小值。
- max():求最大值。
print(abs(-5)) # 绝对值:5 print(divmod(13,2)) # 求商和余数:(6,1) print(round(3.50)) # 五舍六入:3 print(round(3.51)) #4 print(pow(5,2,3)) # 如果给了第三个参数,表示最后取余:1,整个计算过程是5**2%3取余 print(sum([1,2,3,4,5,6,7,8,9,10])) # 求和:55 print(min(3,2,5,19,6,3)) #求最小值:2 print(max(3,5,12,8,5,11)) #求最大值:12
3、进制相关函数
Python 进制转换函数是 Python 中一种非常重要的函数,它可以帮助我们将进制之间的数字转换成另一个进制的数字。比如,将十进制转换成二进制,将十六进制转换成十进制等。
- bin(x):将一个整数 X 转换成二进制字符串,以“0b”开头。
- oct(x):将一个整数 X 转换成八进制字符串,以“0o”开头。
- hex(x):将一个整数 X 转换成十六进制字符串,以“0x”开头。
print(bin(10)) # 二进制:0b1010 print(hex(10)) # 十六进制:0xa print(oct(10)) # 八进制:0o12
4、和数据结构相关的函数
和数据结构相关的函数又主要分为两类:字符串相关的函数和可迭代对象相关的函数。
- lower(),将字符串的所有字符都转换为小写字符。
>>> str1 = "aaBBccEEff" >>> str1 'aaBBccEEff' >>> str1.lower() ## 将字符串中的所有字符都转换为小写字符 'aabbcceeff'
- upper(),将字符串中所有字符都转换为大写字符。
>>> str1 = "aaBBccEEff" >>> str1 'aaBBccEEff' >>> str1.upper() ## 将字符串中的所有字符都转换为大写字母 'AABBCCEEFF'
- count(),统计字符串中指定字符出现的次数。
>>> str1 = "aabbaaccdddb" >>> str1.count("a") ## 统计指定字符在字符串中出现的次数 4 >>> str1.count("a", 3) ## 从索引为3的位置检索 2 >>> str1.count("a", 0, 3) ## 指定范围 2
- startswith(),判断字符串是否以指定字符开头。
>>> str1 = "abcd" >>> str1 'abcd' >>> str1.startswith("a") ## 判断字符串是否以指定字符开头 True >>> str1.startswith("x") False
- endswith(),判断字符串是否以指定字符结尾。
>>> str1 = "abcd" >>> str1 'abcd' >>> str1.endswith("d") ## 判断字符串是否以指定字符结尾 True >>> str1.endswith("b") False >>> str1.endswith("b", 0, 2) ## 可以指定检索的范围 True
- find(),查找字符串中指定的字符。
>>> str1 = "abcderabed" >>> str1 'abcderabed' >>> str1.find("b") ## 查找字符串中的指定字符, 并返回索引 1 >>> str1.find("d") 3 >>> str1.find("x") ## 当字符串中不存在该字符串时, 返回-1 -1 >>> str1.find("b", 3) ## 可以指定查找的范围,从索引为3的字符开始向后查找 7
- index(),返回字符串中指定字符的索引。
>>> str1 = "abcderabed" >>> str1 'abcderabed' >>> str1.index("c") ## 返回匹配的索引 2 >>> str1.index("a", 3) ## 可以指定查找的范围 6 >>> str1.index("x") ## 当字符串中不存在该字符时, 返回异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
- replace(),将字符串中的字符替换为指定的字符。
>>> str1 = "abcdabcdabcd" >>> str1.replace("a", "W") ## 将字符串中a替换为W 'WbcdWbcdWbcd' >>> str1.replace("a", "W", 1) ## 可以指定替换的次数 'Wbcdabcdabcd'
- strip(),删除字符串两边的所有空白或者指定字符。
>>> test1 = " abc " >>> test1.strip() ## 删除字符串两边的空白 'abc' >>> test2 = "xxyyyzzzx" ## 指定删除的字符 >>> test2.strip("x") 'yyyzzz'
- len(),返回一个对象中的元素的个数。
lst = [5,7,6,12,1,13,9,18,5] print(lst.len())
- sort() /sorted(),对可迭代对象做排序操作。
lst = [5,7,6,12,1,13,9,18,5] lst.sort() # sort是list里面的一个方法 print(lst) #[1, 5, 5, 6, 7, 9, 12, 13, 18] ll = sorted(lst) # 内置函数,返回给你一个新列表 新列表是被排序的 print(ll) #[1, 5, 5, 6, 7, 9, 12, 13, 18] l2 = sorted(lst,reverse=True) #倒序 print(l2) #[18, 13, 12, 9, 7, 6, 5, 5, 1]
- zip():将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回的列表长度与最短的对象相同。
lst1 = [a, b, c, d, e, f] lst2 = ['1', '2', '3', '4', '5', '6'] lst3 = ['one', 'two', 'three', 'four', 'five', 'six'] print(zip(lst1, lst1, lst3)) #<zip object at 0x00000256CA6C7A88> for el in zip(lst1, lst2, lst3): print(el) # (a, '1', 'one') # (b, '2', 'two') # (c, '3', 'three') # (d, '4', 'four') # (e, '5', 'five') # (f, '6', 'six')
- filter(),用来筛选的函数,它的语法是:fiter(function, Iterable)。
def func(i): # 判断奇数 return i % 2 == 1 lst = [1,2,3,4,5,6,7,8,9] l1 = filter(func, lst) #l1是迭代器 print(l1) #<filter object at 0x000001CE3CA98AC8> print(list(l1)) #[1, 3, 5, 7, 9]
- map(),会根据提供的函数对指定序列做映射(lambda),它的语法是:map(function, iterable)。
def f(i): return i lst = [1,2,3,4,5,6,7,] it = map(f, lst) # 把可迭代对象中的每一个元素传递给前面的函数进行处理,处理的结果会返回成迭代器print(list(it)) #[1, 2, 3, 4, 5, 6, 7]