首页 > 其他分享 >内置函数、可迭代对象、迭代器对象

内置函数、可迭代对象、迭代器对象

时间:2022-10-14 21:00:17浏览次数:50  
标签:__ .__ 迭代 对象 res next 内置 print

1.重要内置函数

1.zip:组成一个新的列表,列表中的元素是几个列表当中各元素组成的元组

1.1 几个列表数据值个数相等时:
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2)
print(list(res))  # [(11, 'jason'), (22, 'kevin'), (33, 'oscar'), (44, 'jerry'), (55, 'tony')]
res1 = zip(l1, l2, l3)
print(list(res1))  # [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3), (44, 'jerry', 4), (55, 'tony', 5)]

1.2 几个列表数据值个数不相等时:
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2)
print(list(res))  # [(11, 'jason'), (22, 'kevin'), (33, 'oscar'), (44, 'jerry')]

2.filter:函数会遍历列表lst, 用lambda表达式来判断所遍历到的数据是否符合要求
l1 = [11, 32, 423, 12, 45, 32, 456, 34, 654]
res = filter(lambda x:x>100, l1)
print(list(res))  # [423, 456, 654]

l1 = [11, 32, 423, 12, 45, 32, 456, 34, 654]
res = filter(lambda  a:a > 10 and a <100, l1)
print(list(res))  # [11, 32, 12, 45, 32, 34]

3.sorted:对列表中的数据值进行排序,默认升序
l1 = [11, 32, 423, 12, 45, 32, 456, 34, 654]
res = sorted(l1) 
print(res)  # [11, 12, 32, 32, 34, 45, 423, 456, 654]
"""
排序也可以用列表的内置方法,list.sort()(如果是降序要在括号内加上reverse = True)
"""
l1.sort()
print(l1)  # [11, 12, 32, 32, 34, 45, 423, 456, 654]
l1.sort(reverse=True)
print(l1)  # [654, 456, 423, 45, 34, 32, 32, 12, 11]

2.常见的内置函数

1.abs():绝对值
print(abs(-25))  # 25
print(abs(30))  # 30

2.all():结果是一个布尔值,括号内跟一个列表,列表中全为True结果才是True,有一个为False结果就为False(类似and、'与')
print(all([1, 23, 4, 3, 2]))  # True
print(all([0, 1, 3]))  # False
print(all(['jason', 'jerry', '']))  # False

3.any():结果是一个布尔值,括号内跟一个列表,列表中全为False结果才是False,有一个为True结果就为True(类似and、'或')
print(any([1, 2, 0]))  # True
print(any([0, None, '']))  # False
"""
布尔值为False的数据类型:0、None、空字符串、空列表、空字典
"""

4.bin():转二进制 
oct():转八进制
hex():转十六进制
int():转十进制,括号内第二个参数要注明几进制

print(bin(10))  # 0b1010
print(oct(10))  # 0o12
print(hex(10))  # 0xa
print(int('0xa', 16))  # 10

5.bytes():也可以用s.encode('utf8')
s = '十一后连上七天班'
print(s.encode('utf8'))  # b'\xe5\x8d\x81\xe4\xb8\x80\xe5\x90\x8e\xe8\xbf\x9e\xe4\xb8\x8a\xe4\xb8\x83\xe5\xa4\xa9\xe7\x8f\xad'
print(bytes(s, 'utf8'))  # b'\xe5\x8d\x81\xe4\xb8\x80\xe5\x90\x8e\xe8\xbf\x9e\xe4\xb8\x8a\xe4\xb8\x83\xe5\xa4\xa9\xe7\x8f\xad'

6.callible():判断名字是否可以调用(内置函数可以、定义的函数的也可以)
name = 'jason'
print(callable(name))  # False
def index(a):
    a + 1
print(callable((index)))  # True
print(callable(print))  # True
                      
7.chr()、ord():基于ASCII码表切换数字与字母,chr():数字转字母,ord():字母转数字
print(chr(68))  # D
print(ord('A'))  # 65
"""
ASCII码表数字与字母切换:A-Z:65-90,a-z:97-122
"""

8.dir():返回括号内对象能够调用的名字
print(dir([]))  # 查询列表
print(dir('hello'))  # 查询字符串能调用的属性
print(dir(''))  # 查询字符串能调用的属性

9.divmod():括号内后面跟两个参数,第一个数被除数,第二个是除数,返回一个元祖,第一个是整除数,第二个是余数。
print(divmod(35, 2))  # (17, 1)
page_num, more = divmod(12652, 25)
if more:
    page_num += 1
print('总页码为:', page_num)  # 总页码为: 507

10.emumerate():字典生成式
放在字典里,字典的K是索引值(可以指定只是位置),字典的V是字符串的字符。
d1 = {i:j for i, j in enumerate('halle world')}
print(d1)  # {0: 'h', 1: 'a', 2: 'l', 3: 'l', 4: 'e', 5: ' ', 6: 'w', 7: 'o', 8: 'r', 9: 'l', 10: 'd'}

也可不放在字典里,分别打印i,j:
for i,j in enumerate('hello'):
    print(i, j)

11.eval()、exec():识别字符串中的代码并执行
"""
eval()和exec()直接执行前面不需要加print,加print除了打印字符串中的列表外会返回一个None
"""   
s = "print('哈哈哈')"
eval(s)  # 哈哈哈
exec(s)  # 哈哈哈

print(eval(s))  # 哈哈哈 None
print(exec(s))  # 哈哈哈 None

"""
eval()和exec()区别:eval()只能识别简单的代码,具有逻辑性的不行,exec()可以
"""
s = 'for i in range(20):print(i)'
exec(s)  # 打印0-20数字
eval(s)  # 报错

12.id():获取内存地址
    
13.input():获取用户输入
    
14.instance():第一个参数为数据值,第二个为数据类型,输出结果为布尔值,只能判断整形
print(isinstance(1, int))  # True

15.map():映射,按照指定的方式对列表中的数据进行处理,输出一个新列表,方式用lambda(匿名函数)或自定义函数来定义
l1 = [1, 2, 3, 4, 5]
res = map(lambda x:x+1, l1)
print(list(res))  # [2, 3, 4, 5, 6]

16.max()/min():
16.1.输出列表中的最大(最小值)
l1 = [1, 23, 4, 3, 2]
print(max(l1))  # 23

16.2.比较字典中的数据值
dict = {
    'jason': 100000,
    'jerry': 5000,
    'oscar': 10000,
    'kitty': 20000
}

 dict = {
    'jason': 100000,
    'jerry': 5000,
    'oscar': 10000,
    'kitty': 20000
}
def index(a):
    return dict.get(a)
res = max(dict, key=index)  # 传了函数修改了比较的依据,如果不传则会按照字符编码顺序比较
print(res)  # jason

15.open():打开文件
语法结构:
文本模式:with open (r'文件路径', 'r/w/a', encoding='utf8')

二进制模式:with open (r'文件路径', 'rb/wb/ab')

16.pow():幂指数
print(pow(2, 4)) # 16

17.range():用来确定范围的函数
range(1,10):打印1-9
range(10):打印0-9
range(1, 10, 2):间隔为2
"""
python2中的xrange和python3中的range用for循环输出一个范围都会展开每个数字,python2中是一个范围,不会展开
"""

18.round():'五舍六入'
print(round(4.2))  # 4
print(round(4.5))  # 4
print(round(4.6))  # 5

19.sum():求和:列表、集合、元组都适用
l1 = [1, 2, 3, 4]
t1 = (1, 2, 3, 4)
s1 = {1, 2, 3, 4}
print(sum(l1))  # 10
print(sum(t1))  # 10
print(sum(s1))  # 10

3.可迭代对象

1.可迭代对象:对象内有__iter__方法的都称为可迭代对象
"""
1.内置方法  通过点的方式能够调用的方法
2.__iter__  双下iter方法
"""

2.可迭代对象的范围:
    是可迭代对象的数据类型:
        str、list、dict、tuple、set、文件对象
"""
for循环支持的数据类型:str、list、dict、tuple、set,文件也支持for循环
"""
        
    不是可迭代对象:
        int、float、bool

3.可迭代的含义:
	迭代:更新换代 eg:手机app更新
	可迭代对象在python中可以理解为是否支持for循环

4.迭代器对象

1.迭代器对象:
    是由可迭代对象调用__iter__方法产生
    迭代器对象判断的本质是看是否有__iter__和__next__(两者必须都有)
    
2.迭代器对象的作用
	提供了一种不依赖于索引取值的方式,正因为有迭代的存在,我们的字典,集合才能否被for循环
    
3.迭代器对象实操
s = 'hello'
res = s.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())  # 会依次打印'hello'
print(res.__next__())  # 再执行会报错,而for循环不会
"""
__next__取不到值会直接报错
"""
print(s.__iter__().__next__())
print(s.__iter__().__next__())
print(s.__iter__().__next__())
print(s.__iter__().__next__())
print(s.__iter__().__next__())  # hhhhh
"""
会连打5个h,因为每次调用可迭代对象并且变成迭代器对象,所以每次都会重新执行
"""

4.注意事项:
    可迭代对象调用__iter__会成为迭代器对象,迭代器对象如果还调用__iter__不会有任何变化,还是迭代器对象本身

5.for循环本质:

for 变量名 in 可迭代对象:
    循环体代码
"""
1.先将in后面的可迭代对象用__iter__转变成迭代器对象
2.依次让迭代器调用__next__取值
3.一旦__next__取不到值报错,for循环会自动捕捉并处理,所以我们不会看到for循环报错
"""

6.异常捕获/处理

1.异常
	异常就是代码运行报错 行业俗语叫bug
	代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
	语法错误
    	不允许出现 一旦出现立刻改正 否则提桶跑路
	逻辑错误
    	允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
	错误位置
 	错误类型
 	错误详情

标签:__,.__,迭代,对象,res,next,内置,print
From: https://www.cnblogs.com/zkz0206/p/16792998.html

相关文章

  • python进阶之路14 之函数内置方法、可迭代对象、异常捕获处理
    重要内置函数1.map()映射l1=[1,2,3,4,5]#deffunc(a):# returna+1res=map(lambdax:x+1,l1)print(list(res))......
  • 内置函数、迭代器、异常处理
    内置函数、迭代器、异常处理目录重要内置函数常见内置函数可迭代对象1、概念2、可迭代对象的范围3.可迭代的含义迭代器对象1.迭代器对象2.迭代器对象的作用3.迭代器对象实......
  • 内置函数与可迭代对象、迭代器对象
    重要内置函数1.map映射map映射就是根据途共的函数对指定的序列做映射l1=[12,23,28,34,65]需求:元素全部自增6方法1:利用列表生成式defindex(n):returnn+6......
  • 内置函数与迭代对象
    今日内容总结重要内置函数常见内置函数可迭代对象迭代器对象for循环的本质异常捕获/处理重要内置函数zipzip()函数用于将可迭代的对象作为参数,主要......
  • python基础-内置函数、可迭代对象、迭代器对象、异常捕获
    python基础-内置函数、可迭代对象、迭代器对象、异常捕获目录一、重要内置函数1.zip2.filter过滤3.sorted升序排序二、常见内置函数1.abs()绝对值2.all()3.any()4.bin二进......
  • 内置函数及迭代器
    内置函数及迭代器重要内置函数1.zipzip()接受一系列可迭代的对象作为参数,将对象中的对应的元素打包成以一个个tuple,zip()函数返回iterable(可迭代对象) """传入的参......
  • 函数内置方法与迭代器
    重要内置函数zip将多个可迭代对象组合起来,然后可以用列表一次性将结果存入列表、元组或者字典for循环可以把元素以此取出fliter特别需要注意到一点是在python2.7版......
  • 创建贷项订单报错: 不允许业务对象 BUS2032 和销售凭证类别 K 的组合
    使用BAPI_SALESORDER_CREATEFROMDAT2 创建正常销售订单没问题,但是创建贷项订单的时候报错:换成SD_SALESDOCUMENT_CREATE即可......
  • 常见内置函数及迭代器相关基础
    昨日内容回顾算法简介及二分法算法是解决一类问题的逻辑方法。二分法是最简单的算法,主要用来查找有序数据列表中指定数据。三元表达式三元表达式适用于编写简单的......
  • 创建权限对象、角色、并分配角色
    整体步骤:一、SU20:维护权限字段二、SU21创建权限对象,分配权限字段:三、SU24关联程序和自建权限对象(标准tcode会默认存在标准权限对象)四、PFCG创建角色五、SU01给用户分配角......