python内置函数

重要内置函数

zip (重要)

image

# 1.基础使用  # 将两个列表元素一一对应打包成元组
l1 = [11, 22, 33, 44]
l2 = ['miku', 'alice', 'tifa', 'cloud']
zip_object = zip(l1, l2)  # <zip object at 0x00000174C2249A00> 
print(list(zip_object))  # [(11, 'miku'), (22, 'alice'), (33, 'tifa'), (44, 'cloud')]

# 2.两个列表长度不一样的情况
l1 = [11, 22, 33, 44]
l2 = ['miku', 'alice', 'tifa']
zip_object = zip(l1, l2)
print(list(zip_object))  # [(11, 'miku'), (22, 'alice'), (33, 'tifa')]  # 取决于最短的列表

# 组合使用
l1 = [11, 22, 33, 44]
l2 = ['miku', 'alice', 'tifa']
l3 = ['tell', 'me']
zip_object = zip(l1, l2, l3)
print(list(zip_object))  # [(11, 'miku', 'tell'), (22, 'alice', 'me')]

filter

# 1.filter的意思是过滤

# 2.基本使用
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = filter(lambda x: x > 40, l1)
print(res)  # <filter object at 0x0000028A41576070>
print(list(res))  # [44, 55, 66, 77, 88]
# filter接受两个参数 filter(如何过滤,被过滤的对象)
# 这里的匿名函数定义了 x > 40 就留下 不满足就被过滤

# 3.在过滤条件 简单 的时候使用

sorted

# 1.基本使用
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)  # 传入一个列表
print(type(res))  # <class 'list'>
print(res)  # [11, 12, 21, 22, 32, 53, 64, 76]  # 这个列表会默认按照升序排列
print(l1)  # [21, 12, 53, 64, 76, 32, 11, 22]  # 原列表没有被改变

常见内置函数

abs

# 1.abs函数对应的是数学中的绝对值
print(abs(-100))  # 100
print(abs(100))  # 100
print(abs(-200.2))  #  200.2  
print(abs(complex('1+2j')))  # 2.23606797749979  # 对于复数类型complex也可以使用abs

all、any (偶尔用)

# 1.all基本使用
# 所有数据值对应的布尔值为True结果才是True 否则返回False
print(all([0, 1, 2, 3]))  # False
print(all([1, 2, 3, True]))  # True
print(all(['miku', '']))  # False

# 2.适用情景
# 判断用户登录状态 判断列表里的所有东西都是True
# 实际例子:判断一个片区里是不是都 接种疫苗

# 3.any使用
# any的用法恰恰和all相反
# 所有数据值对应的布尔值有一个为True结果就是True 否则返回False
def func():
    pass
print(any([0, None, '', {}, (), [], 0.0]))  # False
print(any([0, complex('2j')]))  # True
print(any([0, func]))  # True

bin、oct、hex、int

# 快速浏览

# 1. bin 转二进制
# 2. oct 转八进制
# 3. hex 转十六进制
# 4. int 浮点型转整型 字符串转整型
# 字符串的开头:0b则为二进制 0o则为八进制 0x则为十六进制
# 详细浏览

int(其他数据类型)
#  浮点型可以直接转 字符串必须满足内部时纯数字才可以转
num = int('1')
print(num, type(num))  # 1 <class 'int'> 
#  字符串转换成整型的1
print(int('1.1'))  # 这样转会报错
#  ValueError: invalid literal for int() with base 10: '1.1'

十进制转其他进制:
print(bin(100))  # 0b1100100
print(oct(100))  # 0o144
print(hex(100))  # 0x64
# 数字的开头如果是0b则为二进制 0o则为八进制 0x则为十六进制

其他进制转十进制用int方法就可以了:
print(int(0b1100100))  # 100
print(int(0o144))  # 100
print(int(0x64))  # 100

可以给int传入第二个参数,指定传入的是什么进制,这样等于告诉int这个字符串是个2进制数:
print(int("0b1100100", 2))  # 100
print(int("0o144", 8))  # 100
print(int("0x64", 16))  # 100
直接传字符串,int认不出来会报错:
print(int("0b1100100"))  # ValueError: invalid literal for int() with base 10: '0b1100100'

# python对数字的敏感度很低(精确度低)
s1 = 1.1
s2 = 1
print(s1 - s2)  # 0.10000000000000009

bytes

# 将字符串转换成bytes类型 可以指定编码
s1 = 'miku 你好'
print(s1.encode('utf8'))  # 字符串内置方法encode  # b'miku \xe4\xbd\xa0\xe5\xa5\xbd'
print(bytes(s1, 'utf8'))  # 用bytes转  # b'miku \xe4\xbd\xa0\xe5\xa5\xbd'

callable (用的很多)

# callable的意思是调用
# 判断名字是否可以加括号调用
name = 'miku'
def index():
    print('from index')
print(callable(name))  # False
print(callable(index))  # True

chr ord

# 基于ASCII码表做数字与字母的转换
print(chr(65))  # A
print(chr(90))  # Z
print(chr(97))  # a
print(chr(122))  # z
print(ord('A'))  # 65
# ascii表对应关系(重要)
# a-z 对应 97-122 
# A-Z 对应 65-90

# 使用情景: 图片验证码

dir (有用)

# 返回括号内对象能够调用的名字
print(dir('hello'))  # 输出如下 可见其中有 字符串内置方法
'''['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', 
'__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', 
'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 
'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 
'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 
'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 
'swapcase', 'title', 'translate', 'upper', 'zfill']
'''

divmod (有用)

# 输出元组 第一个数据为整除数 第二个是余数
res = divmod(100, 2)
print(res)  # (50, 0)
res = divmod(100, 3)
print(res)  # (33, 1)

# 使用情景:网页分页实现 有很多篇文章 到底分多少网页放
"""
总数据     每页展示的数据     总页码
100         10              10
99          10              10
101         10              11
"""
# 代码实现
page_num, more = divmod(9999, 20)  # 9999个数据 每个网页放20个
print(page_num, more)  # 499 19 最后一页放19个
if more:
    page_num += 1  # 如果存在余数 将分页数加1
print('总页码为:', page_num)  # 总页码为: 500

enumerate (常用)

# 1.enumerate用于把列表的引索和数据值一并取出
for i,j in enumerate(['miku','tifa','alice','cloud']):
    print(i,j)

image

# 2.enumerate还可以传入一个关键字参数start
for i, j in enumerate(['miku', 'tifa', 'alice', 'cloud'], start=100):
    print(i, j)
# start的作用是控制索引的起始位置
# 100 miku

image

eval、exec (了解)

s1 = 'print("miku")'
eval(s1)  # miku
exec(s1)  # miku
s2 = 'for i in range(100):print(i)'
eval(s2)  # 报错  # 只能识别简单的python代码 具有逻辑性的都不行
exec(s2)  # 可以识别具有一定逻辑性的python代码

# exec更多使用:创造名称空间 创造一个类出来??

hash

# hash是加密的意思 不让你看明文 hash是一种加密方法
print(hash('miku'))  # 1704811362320018881

id、input、isinstance(重要)

# id
print(id('miku'))  # 2869245943344 # 返回对象的内存地址

# input 获取用户输入

# isinstance 重要
# isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
# 如果要判断两个类型是否相同推荐使用 isinstance()。
a = 'miku'
print(isinstance(a, str))  # True

map (重要)

# map的意思是映射
l1 = [1, 2, 3, 4, 5]

def func(a):
    return a + 1

res = map(func, l1)
print(res)  # <map object at 0x000002A3580A5160>
print(list(res))  # [2, 3, 4, 5, 6]
# map作用:
# 对l1这个列表执行func函数

max、min

# 1.简单使用
l1 = [11, 22, 33, 44]
res = max(l1)  # 44

# 2.对字典使用
d1 = {
    'zj': 100,
    'jason': 8888,
    'berk': 99999999,
    'oscar': 1
}
print(max(d1))  # zj
# 1.max会先对传入的字典使用for循环
# 2.for循环字典只有键会参与
# 3.键是字符串 会取字符串的第一个字母进行比较
# 4.比较的方法是看这个字母对应ASCII表的数字 数字大的在比较中胜出
# 5.a-z对应97-122 A-Z对应65-90
# 6.在键中z对应的数字最大
# 7.所以会输出zj

# 3.更复杂的使用
d1 = {
    'zj': 100,
    'jason': 8888,
    'berk': 99999999,
    'oscar': 1
}  # 比较字典键值对中的值 输出最大的
# 9999999最大
res = max(d1, key=lambda k: d1.get(k))
print(res)  # berk

pow

# 幂指数 次方
print(pow(2, 2))  # 4
print(pow(2, 3))  # 8
print(pow(2, 4))  # 16

round (用的少)

# round 用的不多 四舍五入
# round() 方法返回浮点数x的四舍五入值
print(round(9.9))  # 10
print(round(9.5))  # 10
print(round(9.4))  # 9
print(round(9.49))  # 9
print(round(1))  # 1

sum、reduce

# sum 
# 求和 sum需要传入可迭代对象
print(sum([11, 22, 33, 44, 55, 66]))  # 231
print(sum({0: 'miku', 1: 'alice', 2: 'cloud'}))  # 3  # 字典的键进行求和
# reduce
# 传入多个值返回一个值
# 可以用于列表求和
# 因为使用少 从内置函数中移除
from functools import reduce
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = reduce(lambda a, b: a + b, l1)  # 将列表所有值求和
print(res)  # 396

res2 = reduce(lambda a, b: a + b, l1,100)  # 第三个参数的意思 求和之后再加100
print(res2)  # 496
posted @ 2022-10-14 16:56  passion2021  阅读(55)  评论(0编辑  收藏  举报