内置函数部分

【一】什么是内置函数

  • 内置函数就是python提供的可以直接拿来用的函数,例如print,input

【二】数据类型转换(8)

【1】数字类型转换

(1)整数类型转换(int)
  • int : 整型(整数)

# int(x) : x 转换为整数
​
res = '1'
print(res, type(res))
# 1 <class 'str'>
​
# 将可以转换为整数的类型转换为整数
res_int = int(res)
print(res_int, type(res_int))
# 1 <class 'int'>
(2)浮点数类型转换(float)
  • float : 浮点型(小数)

# float(x) : x 转换为浮点数
​
start = 1
print(start, type(start))
# 1 <class 'int'>
​
start_float = float(start)
print(start_float, type(start_float))
# 1.0 <class 'float'>

【2】字符串类型转换(str)

  • str() 将数据转化成字符串

    print(str(123)+'456')  #123456

【3】布尔类型转换(bool)

  • bool: 布尔类型(True / False)

# True / False
​
res = 1
print(res, type(res))
# 1 <class 'int'>
​
res_bool = bool(res)
print(res_bool, type(res_bool))
# True <class 'bool'>
​
res = 0
print(res, type(res))
# 0 <class 'int'>
​
res_bool = bool(res)
print(res_bool, type(res_bool))
# False <class 'bool'>

【4】列表类型转换(list)

  • list() 将一个可迭代对象转换成列表

    print(list((1,2,3,4,5,6)))  
    ​
    # [1, 2, 3, 4, 5, 6]

【5】元祖类型转换(tuple)

  • tuple() 将一个可迭代对象转换成元组

    print(tuple([1,2,3,4,5,6]))  
    ​
    # (1, 2, 3, 4, 5, 6)

【6】字典类型转换(dict)

  • 字典:dict 创建一个字典

  • 注释: dict() 函数可接受可迭代对象,用键值对初始化字典。

# 示例
dictionary = dict([(1, 'one'), (2, 'two'), (3, 'three')])
print(dictionary)
# 输出:{1: 'one', 2: 'two', 3: 'three'}

【7】集合类型转换(set)

  • 集合:set 创建一个集合

  • 注释: set() 函数用于创建一个集合,自动去除重复元素。

# 示例
my_set = set([1, 2, 3, 3, 4, 5])
print(my_set)
# 输出:{1, 2, 3, 4, 5}

【三】进制换行(3)

【1】十进制转二进制(bin)

  • bin() 将给的参数转换成二进制

number = 15
# 十进制转二进制
number_bin = bin(number)
print(number_bin)
# 0b1111

【2】十进制转八进制(oct)

  • oct() 将给的参数转换成八进制

number = 15
# 十进制转八进制
number_oct = oct(number)
print(number_oct)
# 0o17

【3】十进制转十六进制(hex)

  • hex() 将给的参数转换成十六进制

number = 10

# 十进制转十六进制
number_hex = hex(number)
print(number_hex)  # 0xa

【四】数学运算(8)

(1)获取绝对值(abs)

  • abs() 返回绝对值

number = -1
# 获取当前整数的绝对值
number_abs = abs(number)
print(number_abs)
# 1

(2)获取商和余数(divmod)

  • divmod() 返回商和余数

number_start = 9
number_end = 4
# (被除数,除数)
result = divmod(number_start, number_end)
print(result)
# (2, 1)
number_discuss, number_remainder = divmod(number_start, number_end)
print(number_discuss)	# 2
print(number_remainder)	# 1

(3)四舍五入(round)

  • round() 四舍五入

    • 给定数字的四舍五入版本,有指定的小数位数。

    • 默认情况下,小数点的数量是0。

    • 因此,如果你调用 round() 时没有第二个参数,该函数将返回最近的整数。

# 我们可以看到,对 4.51 的值为 5
print(round(4.51))
# 我们可以看到,对 4.50 的值为 4
print(round(4.50))
# 我们可以看到,对 4.49 的值为 4
print(round(4.49))
# 这一次我们在 round() 函数中加入了可选的第二个参数。
# 这里我们把  作为第一个参数,把 1 作为第二个参数。
# 我们可以看到,对 4.051 的值为 4.1
print(round(4.051, 1))
# 我们可以看到,对 4.050 的值为 4.0
print(round(4.050, 1))
# 我们可以看到,对 4.049 的值为 4.0
print(round(4.049, 1))
# 这一次我们在 round() 函数中加入了可选的第二个参数。
# 这里我们把  作为第一个参数,把 2 作为第二个参数。
# 我们可以看到,对 4.0051 的值为 4.01
print(round(4.0051, 2))
# 我们可以看到,对 4.0050 的值为 4.0
print(round(4.0050, 2))
# 我们可以看到,对 4.0049 的值为 4.0
print(round(4.0049, 2))

(4)a的b次幂(pow)

  • pow(a,b)求a的b次幂,如果有三个参数,则求完次幂以后对第三数取余

'''
参数介绍:
    x — 数值表达式(整数或者浮点数);
    y — 数值表达式(整数或者浮点数);
    z — 数值表达式(整数或者浮点数),默认不设置z值;

返回值:返回 xy(x的y次方)的值;如果设置了z值,则再对结果进行取模,其结果等效于pow(x,y) %z;
'''

pow(x, y[, z])

pow函数常规使用

print(pow(2,5)) # 等价 2*2*2*2*2 = 32
print(pow(2,3)) # 等价 2*2*2 = 8
print(pow(2,3,5)) # 等价 2*2*2%5 = 8 % 5 = 3
print(2*2*2%5)  # 等价 pow(2,3,5) = 3

pow函数所有的参数必须是数值类型

print(pow(2,'2'))

'''
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'str'
'''

若x,y中有一个是浮点数,那么结果也会转换为浮点数

print(pow(2,3.2))
print(pow(2,3.0))
# 9.18958683997628
# 8.0

(5)求和(sum)

print(sum([1,2,3,4,5,6,7,8,9,10]))  

# 求和:55

(6)最小值(min)

  • min() 求最小值

print(min(5,3,9,12,7,2))  

# 求最小值:2

(7)最大值(max)

  • max() 求最大值

print(max(7,3,15,9,4,13))  

# 求最大值:15

(8)复数转换(complex)

  • complex : 复数

# complex(re, im) : 具有实部 re、虚部 im 的复数。im 默认为零。

start = complex(3, 4)
print(start)  # (3+4j)

second = complex(5, 9)
print(second)  # (5+9j)

res = start + second
print(res) # (8+13j)

【五】数据结构相关(18)

【1】序列相关(5)

(1)翻转(reversed)
  • reversed() 将一个序列翻转, 返回翻转序列的迭代器

lst = "你好!"

# 不会改变原列表,返回一个迭代器
se = reversed(lst)
print(list(se))
# ['!', '好', '你']
(2)切片(slice)
  • slice()列表的切片

lst = [1, 2, 3, 4, 5, 6, 7]
# 第一个是起始位置,第二个是结束位置,第三个是步长(默认跳过起始位置)
print(lst[2:4:1])

s = slice(1, 5, 2)
print(lst[s])
(3)计算长度(len)
  • len() 返回一个对象中的元素的个数

(4)排序(sorted)
  • 语法:sorted(Iterable, key=函数(排序规则), reverse=False)

    • lterable:可迭代对象

    • key:排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进行排序

    • reverse:是否是倒序,True:倒序,False:正序

  • sorted()对可迭代对象进行排序操作(lamda)

list_ = [5,9,7,8,3,2,6]
list_.sort()
print(list_)

# 内置函数,返回了一个新列表 且被排序了
l1 = sorted(list_)
print(l1)			# [2, 3, 5, 6, 7, 8, 9]
# 倒序
l2 = sorted(list_,reverse=True)
print(l2)			# [9, 8, 7, 6, 5, 3, 2]
  • 根据字符串长度给列表排序

list_ = ['one','two','three','four','five']
def f(s):
    return len(s)


l1 = sorted(list_,key=f)
print(l1)	# ['one', 'two', 'four', 'five', 'three']
(5)枚举(enumerate)
  • enumerate()获取集合的枚举对象

list_ = ['one','two','three','four','five']

for index, el in enumerate(list_,1):	# list_是列表,数字1表示从数字1起始枚举可以改起始数字
    print(index)
    print(el)
# 1
# one
# 2
# two
# 3
# three
# 4
# four
# 5
# five

【2】字符串(4)

(1)格式化输出(format)
  • 对齐方式

ki = "hello world"
# 居中
print(format(ki,"^20"))	
#     hello world   

# 左对齐
print(format(ki, "<20")) 
# hello world     

# 右对齐
print(format(ki, ">20"))
#          hello world
  • 进制转换

print(format(3, 'b'))  # 二进制:11
print(format(97, 'c'))  # 转换成unicode字符:a
print(format(11, 'd'))  # ⼗进制:11
print(format(11, 'o'))  # 八进制:13
print(format(11, 'x'))  # 十六进制(⼩写字母):b
print(format(11, 'X'))  # 十六进制(大写字母):B
print(format(11, 'n'))  # 和d⼀样:11
print(format(11))  # 和d⼀样:11
  • 科学计数法

print(format(123456789, 'e'))  # 科学计数法. 默认保留6位小数:1.234568e+08
print(format(123456789, '0.2e'))  # 科学计数法. 保留2位小数(小写):1.23e+08
print(format(123456789, '0.2E'))  # 科学计数法. 保留2位小数(大写):1.23E+08
print(format(1.23456789, 'f'))  # 小数点计数法. 保留6位小数:1.234568
print(format(1.23456789, '0.2f'))  # 小数点计数法. 保留2位小数:1.23
print(format(1.23456789, '0.10f'))  # 小数点计数法. 保留10位小数:1.2345678900
print(format(1.23456789e+3, 'F'))  # 小数点计数法. 很大的时候输出INF:1234.567890
(2)字符串转bytes
  • bytes() 把字符串转化成bytes类型

bs = bytes("今天吃饭了吗", encoding="utf-8")

print(bs) 
# b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\x90\x83\xe9\xa5\xad\xe4\xba\x86\xe5\x90\x97'

(3)获取字节数组(bytearray)

  • bytearray()

    • 返回一个新字节数组,这个数字的元素是可变的,并且每一个元素的值范围是[0,256]

ret = bytearray("knight",encoding="utf-8")
# 输出第零个字符的ASCII码值	
print(ret[0])		# 107
# 输出修改前的字符串
print(ret)		# bytearray(b'knight')
# 将ASCII码第66位置的B值,赋给ret字符串中的第零个字符
ret[0] = 66
# 输出修改后的字符串
print(str(ret))	# bytearray(b'Bnight')

(4)返回对象的字符串格式(repr)

  • repr() 返回一个对象的string形式

word = "今天\n吃了%s顿\t饭" % 3
print(word)
# 原样输出,过滤掉转义字符\n \t \r 不管百分号%
print(repr(word))
# 今天
# 吃了3顿	饭
# '今天\n吃了3顿\t饭'

【3】字符编码(3)

(1)字符编码找数字(ord)
  • ord() 输入字符找代字符编码的位置

print(ord('A'))		# 65
print(ord('国'))		# 22269
(2)数字找字符编码(chr)
  • chr()输入位置数字找出对应的字符

print(chr(65))		# A
print(chr(52099))	# 쮃	
(3)数字转ASCII码
  • ascii() 是ASCII码中的值就会返回,如果不是就会返回u

for i in range(6):				# 打印出0-6的字符
    print(chr(i), end="")		
print(ascii("@"))			# '@'

【4】数据集合(1)

  • 创建一个冻结的集合 (frozenset)

  • feozenset() 创建了一个冻结的集合,冻结的集合不能进行添加和删除操作

  • 注释: frozenset() 函数返回一个不可变的 frozenset 对象,适用于作为字典的键或集合的元素。

frozen_set = frozenset([1,2,3,4])
print(frozen_set)
# frozenset({1, 2, 3, 4})

【5】判断条件(2)

(1)所有为真(all)
  • all()可迭代对象中全部是True,结果才是True

print(all([1,'hello',True,0]))			# False
print(all([1,'hello',True]))			# True
(2)任意为真(any)
  • any()可迭代对象中有一个是True,结果即True

print(any([1,'hello',True,0]))		# True

【6】高阶函数(3)

(1)打包(zip)
  • zip() 函数

    • 用于将可迭代的对象作为参数

    • 将对象中对应的元素打包成一个元组

    • 然后返回到,由这些元组组成的列表中

  • 如果各个迭代器的元素个数不一致,则返回的列表长度与元素个数最少的相同

lst1 = [1, 2, 3, 4, 5, 6]
lst2 = ['醉乡民谣', '驴得水', '放牛班的春天', '美丽人生', '辩护人', '被嫌弃的松子的一生']
lst3 = ['美国', '中国', '法国', '意大利', '韩国', '日本']
print(zip(lst1, lst1, lst3))  # <zip object at 0x00000256CA6C7A88>

for el in zip(lst1, lst2, lst3):
    print(el)
# (1, '醉乡民谣', '美国')
# (2, '驴得水', '中国')
# (3, '放牛班的春天', '法国')
# (4, '美丽人生', '意大利')
# (5, '辩护人', '韩国')
# (6, '被嫌弃的松子的一生', '日本')

列表3中少了一个"日本"元素,输出时就按照最少的元素个数输出。

lst1 = [1, 2, 3, 4, 5, 6]
lst2 = ['醉乡民谣', '驴得水', '放牛班的春天', '美丽人生', '辩护人', '被嫌弃的松子的一生']
lst3 = ['美国', '中国', '法国', '意大利', '韩国']
print(zip(lst1, lst1, lst3))  # <zip object at 0x00000256CA6C7A88>

for el in zip(lst1, lst2, lst3):
    print(el)
# (1, '醉乡民谣', '美国')
# (2, '驴得水', '中国')
# (3, '放牛班的春天', '法国')
# (4, '美丽人生', '意大利')
# (5, '辩护人', '韩国')
(2)过滤(filter)
  • 语法:fiter(function. iterable)

    • function: 用来筛选的函数.

      • 在filter中会自动的把iterable中的元素传递给function.

      • 然后根据function返回的True或者False来判断是否保留留此项数据

    • Iterable: 可迭代对象

  • filter() 过滤 (lamda)

def func(i):
    return i % 2 == 1
list_ = [1,2,3,4,5,6,7,8,9,10]
l1 = filter(func, list_)
print(l1)			# <filter object at 0x0000018E16EC6050>
print(list(l1))		# [1, 3, 5, 7, 9]

(3)映射(map)

  • 语法 : map(function, iterable)

    • 可以对可迭代对象中的每一个元素进行映射. 分别去执行 function

  • map() 会根据提供的函数对指定序列列做映射(lamda)

def f(i):
    return i
list_ = [1,2,3,4,5,6,7,8,9]
# 把可迭代对象中的每一个元素传递给前面的函数进行处理.
# 处理的结果会返回成迭代器print(list(it))
it = map(f,list_)
print(it)		# <map object at 0x0000017FD5BE6050>
# 如果要查看 map 的结果需要用 list 强转
print(list(it))	# [1, 2, 3, 4, 5, 6, 7, 8, 9]

【六】作用域(2)

  • locals() 返回当前作用域中的名字

  • globals() 返回全局作用域中的名字

name = "knight"


def func():
    a = 6
    # 当前作用域中的内容
    print(f"这是当前作用域中的内容 :>>>> {locals()}")
    # 全局作用域中的内容
    print(f"这是全局作用域中的内容 :>>>> {globals()}")

    print("我是函数func内部")


func()

# 这是当前作用域中的内容 :>>>> {'a': 6}
# 这是全局作用域中的内容 :>>>> {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000219FC164940>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:\\pycharm projects\\day\\高阶函数\\内置函数.py', '__cached__': None, 'number_start': 9, 'number_end': 4, 'result': (2, 1), 'name': 'knight', 'func': <function func at 0x00000219FC1CB640>}
# 我是函数func内部

【七】迭代器

【1】循环生成数据(range)
  • range() 生成数据

print(range(1,10))
# range(1, 10)
print([i for i in range(1,10)])
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
【2】获取迭代器(iter)
  • iter()

  • 获取迭代器,内部实际使用的是__iter__方法来获取迭代器

list_ = [1,2,3,4,5]
# __iter__()获得迭代器
it = iter(list_)
print(it)		# <list_iterator object at 0x0000022432258220>
【3】向下执行(next)
  • next()

  • 迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目

list_ = [1,2,3,4,5]
#  获得迭代器
it = iter(list_)
print(it)
# <list_iterator object at 0x000001B0F003A800>
print(next(it))		# 1
print(next(it))		# 2
print(next(it)) 	# 3
print(next(it))		# 4
print(next(it))		# 5
【八】字符串类型代码的执行(3)
【1】指定指令并返回结果(eval)

eval()执行字符串类型的代码,并返回最终结果

s1 = input("请输入a*b:")
# 2*2
print(eval(s1))
# 4
【2】指定指令不返回结果(exec)
s2 = "for i in range(6):print(i)"
# exec 执行代码不返回任何内容 
a = exec(s2)
# 0
# 1
# 2
# 3
# 4
# 5
print(a)	# None

# 动态执行代码
exec("""
def func():
    print("wszjl")
""")
func()	# wszjl
【3】编码指令
  • compile() 将字符串类型的代码编码. 代码对象能够通过exec语句来执行或者eval()进行求值

code = "for i in range(3): print(i)"
# comile 不会执行代码,只是编译
com = compile(code,"",mode="exec")
# 执行编译的结果
exec(com)
# 0
# 1
# 2
code2 = "5+6+7"
com2 = compile(code2, "", mode="eval")
print(eval(com2))
# 18
code3 = "name = input('请输入你的名字:')"
# 输入:knight

com3 = compile(code3, "", mode="single")
exec(com3)
print(name)  # knight

【九】输入输出(2)

  • print():打印输出

  • input():获取用户输出的内容

【十】算法(1)

hash() :

  • 获取到对象的哈希值(int, str, bool, tuple).

k = 'knight'
print(hash(k))		# -2046328051854413876
  • 列表不允许hash

lst = [1, 2, 3, 4, 5]
print(hash(lst))
# 报错,列表是不可哈希的

# TypeError: unhashable type: 'list'
  • hash算法:

    • (1) 目的是唯一性

    • (2) dict 查找效率非常高

  • hash表:

    • 用空间换的时间 比较耗费内存

【十一】文件操作(1)

  • open(): 用于打开一个文件,创建一个文件句柄

f = open('file',mode='r',encoding='utf-8')
f.read()
f.close()

【十二】导入模块(1)

# 让用户输入一个要导入的模块
name = input("请输入要导入的模块:")
json = __import__(name)
# 可以动态导入模块
print(json.dumps({"name":"knight"}))
# {"name":"knight"}

【十三】帮助(1)

help():函数用于查看函数或模块用途的详细说明

# 查看字符串的用途
print(help(str))  

【十四】调度相关(1)

  • callable():用于检查一个对象是否可调用的

    • 如果返回True,object有可能调用失败

    • 如果返回False,那么一定不会调用成功

a = 6
# 变量a不能被调用
print(callable(a))
# False


def f():
    print("knight")
    
    
print(callable(f))
# True

【十五】查看内置属性(1)

  • dir():

    • 查看对象的内置属性

    • 访问的是对象中的__dir__()方法

# 查看元组的方法
print(dir(tuple))

相关推荐

  1. 函数部分

    2024-04-25 00:22:05       13 阅读
  2. Python 函数

    2024-04-25 00:22:05       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 00:22:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 00:22:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 00:22:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 00:22:05       20 阅读

热门阅读

  1. CSS transition和animation的用法和区别

    2024-04-25 00:22:05       15 阅读
  2. [普及][NOIP2016 普及组] 回文日期

    2024-04-25 00:22:05       12 阅读
  3. 数据结构 - 链表详解二 - 无头单向非循环链表

    2024-04-25 00:22:05       11 阅读
  4. 上海计算机学会 2024年4月月赛 丙组T1 最大公约数

    2024-04-25 00:22:05       17 阅读
  5. C++中输入输出速度的优化

    2024-04-25 00:22:05       12 阅读
  6. Chisel3 入门 (1)

    2024-04-25 00:22:05       10 阅读
  7. int和byte数组相互转换详解

    2024-04-25 00:22:05       14 阅读
  8. 测试开发-celery框架详解

    2024-04-25 00:22:05       14 阅读