1.介绍
Python
内置很多函数,供我们在开发过程方便使用,下面表格来自runoob.com
2.数字相关
if __name__ == '__main__':
# 绝对值
print("------------------ abs:求绝对值 ------------------")
print("abs(1):", abs(1))
print("abs(-1):", abs(-1))
# 商和余数
print("------------------ divmod:商和余数 ----------------")
print("divmod(10,3): ", divmod(10, 3))
print("divmod(4,2): ", divmod(4, 2))
# 字符串和数字互转
print("------------------ 字符串和数字互转 ----------------")
print("字符串转数字,int('10'): ", int('10'), type(int('10')))
print("字符串转数字,float('5'): ", float('5'), type(float('5')))
print("数字转字符串,str('6'): ", str('6'), type(str('6')))
# 求x的y次幂
print("------------------ 求x的y次幂 ----------------")
print("pow(2, 1): ", pow(2, 1))
print("pow(2, 3): ", pow(2, 3))
# 四舍五入
print("------------------ 四舍五入 ----------------")
print("round(3.33333, 2): ", round(3.33333, 2))
print("round(6.66666): ", round(6.66666))
print("round(6.66666, 2): ", round(6.66666, 2))
print("round(6.66666, 3): ", round(6.66666, 3))
# 进制转换
print("------------------ 进制转换 ----------------")
print("把数字5,转成二进制 bin(5): ", bin(5))
print("把数字5,转成八进制 oct(5): ", oct(5))
print("把数字5,转成十六进制 hex(5): ", hex(5))
# ---------------------------- 输出 ----------------------------
------------------ abs:求绝对值 ------------------
abs(1): 1
abs(-1): 1
------------------ divmod:商和余数 ----------------
divmod(10,3): (3, 1)
divmod(4,2): (2, 0)
------------------ 字符串和数字互转 ----------------
字符串转数字,int('10'): 10 <class 'int'>
字符串转数字,float('5'): 5.0 <class 'float'>
数字转字符串,str('6'): 6 <class 'str'>
------------------ 求x的y次幂 ----------------
pow(2, 1): 2
pow(2, 3): 8
------------------ 四舍五入 ----------------
round(3.33333, 2): 3.33
round(6.66666): 7
round(6.66666, 2): 6.67
round(6.66666, 3): 6.667
------------------ 进制转换 ----------------
把数字5,转成二进制 bin(5): 0b101
把数字5,转成八进制 oct(5): 0o5
把数字5,转成十六进制 hex(5): 0x5
3.列表相关
3.1 生成列表:range
Python3 range()
函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表
语法:
range(stop)
range(start, stop[, step])
参数说明:
-
start
: 计数从start
开始。默认是从0
开始。如range(3)
等价于range(0, 3)
-
stop
: 计数到stop
结束,但不包括stop
。例如:range(0, 3)
是[0, 1, 2]
没有3
-
step
:步长,默认为1
if __name__ == '__main__':
listVar = []
for i in range(1, 30, 5):
listVar.append(i)
print("listVar: ", listVar)
# ----------------------- 输出 -----------------------
listVar: [1, 6, 11, 16, 21, 26]
3.2 求最值:max|min
if __name__ == '__main__':
listVar = [1, 3, 5, 7, 9]
print("最大值:", max(listVar))
print("最小值:", min(listVar))
# ----------------------- 输出 -----------------------
最大值: 9
最小值: 1
3.3 列表截取: slice
slice()
函数的主要作用是获取对象(常用于列表、字符串、元组等)的切片对象
语法:
slice(start, stop[, step])
参数说明:
-
start
: 起始位置 -
stop
: 结束位置 -
step
: 步长,默认为1,不能设置0,可以设置负数(代表反向);
if __name__ == '__main__':
listVar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print("取前三个元素:", listVar[slice(3)])
print("取后三个元素:", listVar[slice(-3, len(listVar))])
print("每隔2个元素:", listVar[slice(0, len(listVar), 2)])
# ----------------------- 输出 -----------------------
取前三个元素: [1, 2, 3]
取后三个元素: [9, 10, 11]
每隔2个元素: [1, 3, 5, 7, 9, 11]
3.4 排序:sorted
语法:
sorted(iterable, key=None, reverse=False)
参数说明:
-
iterable :可迭代对象(常用的有列表、字符串、元组) -
key :指定一个函数,函数用于从可迭代对象中的每个元素中提取比较键,默认为 None
(直接比较元素)。 -
reverse : 排序规则, True
为降序(从大到小),False
为升序(从小到大,默认)。
if __name__ == '__main__':
listVar = [29, 12, 19, 23, 82, 77, 43, 47]
print("正序:", sorted(listVar))
print("倒序:", sorted(listVar, reverse=True))
# 使用key (姓名,年龄)
student = [("张三", 28), ("李四", 20), ("王五", 22)]
# 根据年龄排序
res = sorted(student, key=lambda x: x[1])
print("使用key根据年龄排序:", res)
# ----------------------- 输出 -----------------------
正序: [12, 19, 23, 29, 43, 47, 77, 82]
倒序: [82, 77, 47, 43, 29, 23, 19, 12]
使用key根据年龄排序: [('李四', 20), ('王五', 22), ('张三', 28)]
3.5 求和:sum
if __name__ == '__main__':
listVar = [29, 12, 19, 23, 82, 77, 43, 47]
print("sum:", sum(listVar))
# ----------------------- 输出 -----------------------
sum: 332
4. 迭代相关
4.1 过滤序列: filter
filter
函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换
# 只保留大于等于5的元素
def filterNumber(n) -> bool:
return n >= 5
if __name__ == '__main__':
listVar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 只保留大于等于5的元素
filterRes = filter(filterNumber, listVar)
print("结果:", list(filterRes))
# ----------------------- 输出 -----------------------
结果: [5, 6, 7, 8, 9, 10]
4.2 遍历序列: map
def mapDemo(n):
return n * n
if __name__ == '__main__':
listVar = [5, 6, 7, 8, 9, 10]
res = map(mapDemo, listVar)
print("res:", list(res))
# ----------------------- 输出 -----------------------
res: [25, 36, 49, 64, 81, 100]
5. 判断相关
5.1 都为真: all
该函数用于判断给定的可迭代参数 iterable
中的所有元素是否都为 TRUE
,如果是返回 True
,否则返回 False
。
元素除了是
0、空、None、False
外都算True
。
if __name__ == '__main__':
print('[2, "0", 0]为True?', all([2, "0", 0]))
print('[2, "0"]为True?', all([2, "0"]))
print('[2, "False"]为True?', all([2, "False"]))
print('[2, False]为True?', all([2, False]))
# ----------------------- 输出 -----------------------
[2, "0", 0]为True? False
[2, "0"]为True? True
[2, "False"]为True? True
[2, False]为True? False
5.2 有一个真: any
if __name__ == '__main__':
print('[2, "0", 0]为True?', any([2, "0", 0]))
print('[2, "0"]为True?', any([2, "0"]))
print('[2, "False"]为True?', any([2, "False"]))
print('[2, False]为True?', any([2, False]))
# ----------------------- 输出 -----------------------
[2, "0", 0]为True? True
[2, "0"]为True? True
[2, "False"]为True? True
[2, False]为True? True
6.类属性相关
6.1 属性是否存在: hasattr
判断对象是否包含对应的属性
class Book:
name = '西游记'
pass
if __name__ == '__main__':
b = Book()
print('b.name: ', b.name)
# 先判断属性是否存在
if not hasattr(b, 'title'):
print('b.title 不存在')
# ----------------------- 输出 -----------------------
b.name: 西游记
b.title 不存在
6.2 设置属性: setattr
设置对象属性值, 如果属性不存在则先创建在赋值。
class Book:
name = '西游记'
pass
if __name__ == '__main__':
b = Book()
# 设置不存在属性值
setattr(b, 'title', "我是个标题")
# 获取不存在属性
print('b.title: ', b.title)
# ----------------------- 输出 -----------------------
b.title: 我是个标题
6.3 获取属性: getattr
class Book:
name = '西游记'
pass
if __name__ == '__main__':
b = Book()
# 获取不存在属性,不存在则给默认值
t = getattr(b, 'title', "默认值标题")
print("b.title:",t)
# ----------------------- 输出 -----------------------
b.title: 默认值标题
7.其他
7.1 输入:input
该函数接受一个标准输入数据,返回为 string
类型;
if __name__ == '__main__':
# 这里会等待输入
name = input("请输入姓名: ")
# 输出输入结果
print("姓名:", name)
# ----------------------- 运行 -----------------------
(py3.11) ➜ python test/localTest.py
请输入姓名: 张三丰
姓名: 张三丰
7.2 执行表达式: eval & exec
该函数用来执行一个字符串表达式,并返回表达式的值;
if __name__ == '__main__':
# 计算表达式
print("3 * 4 = ", eval("3 * 4"))
# 执行print输出
eval("print('hello world')")
# 使用exec执行复杂语句
expr = """
sum = x + y + z
print('{} + {} + {} = {}'.format(x, y, z, sum))
"""
exec(expr, {'x': 10, 'y': 11, 'z': 12})
# ----------------------- 运行 -----------------------
3 * 4 = 12
hello world
10 + 11 + 12 = 33
相比于
eval
,exec
可以执行更复杂的Python
代码,如果被执行的表达式换行时,需要注意空格缩进,否则会报错: IndentationError: unexpected indent
7.3 哈希值: hash
if __name__ == '__main__':
for i in range(2):
print('---------------第{}次-----------------'.format(i + 1))
print("hash(100):", hash(100))
print("数字的哈希值:", hash(100))
print('hash("hello"):', hash("hello"))
print("hash(str([1, 2, 3])):", hash(str([1, 2, 3])))
print('hash(str(sorted({"name": "张三"}))):', hash(str(sorted({"name": "张三"}))))
# ----------------------- 输出 -----------------------
---------------第1次-----------------
hash(100): 100
数字的哈希值: 100
hash("hello"): -8543414832826730493
hash(str([1, 2, 3])): -2638161461043833854
hash(str(sorted({"name": "张三"}))): -5783648421303266172
---------------第2次-----------------
hash(100): 100
数字的哈希值: 100
hash("hello"): -8543414832826730493
hash(str([1, 2, 3])): -2638161461043833854
hash(str(sorted({"name": "张三"}))): -5783648421303266172
@注意:通过上面示例,会发现每次调用内置hash函数生成的值都不一样,推荐使用: hashlib.sha1
微信搜索【猿码记】查看更多文章
本文由 mdnice 多平台发布