首页 > 其他分享 >内置函数及迭代器

内置函数及迭代器

时间:2022-10-14 20:13:13浏览次数:46  
标签:__ 内置 函数 迭代 对象 result l1 print

内置函数及迭代器

重要内置函数

1.zip

zip()接受一系列可迭代的对象作为参数,将对象中的对应的元素打包成以一个个tuple,zip()函数返回iterable(可迭代对象)

	""" 传入的参数相等,则返回的list的长度和参数长度相同"""
eg:
    l1 = [11, 22, 33, 44, 55, 66]
    l2 = ['kiki', 'kimi', 'classmate', 'roommate', 'mimi', 'baidu']
    l3 = [1, 2, 3, 4, 5, 6]
    result = zip(l1,l2,l3)
    print(list(result))  # [(11, 'kiki', 1), (22, 'kimi', 2), (33, 'classmate', 3), (44, 'roommate', 4), (55, 'mimi', 5), (66, 'baidu', 6)]
	print(list(result))  # [] 第一次迭代遍历完了,第二次遍历只能返回空集
	
	

    """ 传入的参数不相等,则返回的list的长度和参数长度最短的对象相同"""
eg:
    l1 = [11, 22, 33, ]
    l2 = ['kiki', 'kimi', 'classmate', 'roommate']
    l3 = [1, 2, 3, 4, 5, 6]
    result = zip(l1,l2,l3)
    print(list(result))  # [(11, 'kiki', 1), (22, 'kimi', 2), (33, 'classmate', 3)]
    
    

2.filter

​ 基本语法

filter(function or None, iterable) --> filter object
function:函数 作用是对iterable中的每个元素判断是否符合特定条件
None:不调用任何函数,只对可迭代对象中的元素本身判断真假,保留为真的元素
iterable:可迭代对象

​ 代码实现:


eg:
    l1 =[11,22,33,44,55,66,77,88]
    result = filter(lambda x:x>40,l1) 
    print(list(result))  # 结果得出都是大于40的数据列表[44, 55, 66, 77, 88]

eg:
    l1 =[11,0,33,44,-5,66,77,-88]
    result = filter(lambda x:x>40,l1)
    print(list(result))  # 返回的是[11, 33, 44, -5, 66, 77, -88]  0默认是False,所有帅选过程中进行了过滤

    在filter函数定义中提到,filter函数中参数None表示不调用任何函数,只对可迭代对象中的元素本身判断真假,保留为真的元素,

""" for和列表生成式也同样可以实现 """
 

3.sorted

sort排序
sorted()排序  默认升序

eg:
    l1 = [22, 6, 335, 89, 53, 236, 9953, 12, 45]
    result = sorted(l1)
    print(result)  # [6, 12, 22, 45, 53, 89, 236, 335, 9953]  默认升序

常用的内置函数

1.abs() 绝对值

print(abs(-110))  # 110  取绝对值
print(abs(56))  # 56   取绝对值

2.all() 所有数据值对应的布尔值为True结果为是True,否则返回False

print(all([0,1,2,3,4,67]))  # False  0默认是False
print(all([1,5,7,True]))  # True

3.any() 所有数据之对应的布尔值,有一个为True结果为True,否则返回False

print(any([0, None, '', 1]))  # True
print(any([0, '', 1]))  # True
print(any([0,False,'',[],{}]))  # False

4.bin() oct() hex() int() bool()

print(bin(100))  # 0b1100100
print(oct(100))  # 0o144
print(hex(100))  # 0x64

5.bytes() 编码

s1 = '时间太快了,明天又是周末了'
print(s1.encode('utf8'))  # b'\xe6\x97\xb6\xe9\x97\xb4\xe5\xa4\xaa\.....
print(bytes(s1,'utf8'))  # b'\xe6\x97\xb6\xe9\x97\xb4\xe5\xa4\xaa\xe5\xbf\x.....

6.callable() 判断一个名字是否可以加括号调用

name = 'kiki'
def index():
    print('from index')
print(callable(name))  # False
print(callable(index))  # True

7.chr() ord() 基于ASCll码表做数字与字母的转换

print(chr(65))  # A
print(chr(90))  # Z
print(ord('A'))  #65
print(ord('h'))  # 104

8.dir() 返回括号内对象能够调用的名字

print(dir('hello'))  # ['__add__', '__class__', '__contains__', '__delattr__', '__dir__',.......

9.divmod() 元组 第一个数据为整数,第二个数据是是余数,

result = divmod(100,2)
print(result)  # (50,0) 因为100能被2整除

result = divmod(99,2)
print(result)  #(49,1)  99除于2得整数49,余数为1

"""
总数          每页展示得数据        总页码
100              10                10
99               10               10
102              10               11
"""
page_num,more = divmod(9999,20)
print(divmod(99,10))  # (9, 9)
if more:
    page_num += 1
print('总页码为:',page_num)  # 总页码为: 500

10.enumerate() 枚举


l1 = 'hello world'
for i,k in enumerate(l1):
    print((i, k),end='')  # (0, 'h')(1, 'e')(2, 'l')(3, 'l')(4, 'o')(5, ' ')(6, 'w')(7, 'o')(8, 'r')(9, 'l')(10, 'd')


for a,b in enumerate(l1,start=100):
    print(a,b)  # 101 e  102 l.......
    
    
dict1 = {i:j for i,j in enumerate('happy')}
print(dict1)  # {0: 'h', 1: 'a', 2: 'p', 3: 'p', 4: 'y'}

12.hash()

print(hash('kiki'))  # 哈希加密
""" 
第一次加密:4037269258047698454
第二次加密:7907564079560707150
每次加密都不一样
"""

13.id() input() isinstance()

1.id()
    l1 = 12
    print(id(l1))  # 140712622557184
2.input()
	iuput函数作用:接收来自用户得输入
	input返回值类型:输入值的类型为str
	值的存储:使用=对输入的值进行存储	
3.isinstance()
    l1 =1
    res= isinstance(l1,int)
    print(res)  # True


14.map() max() min()

1.map() 映射
	map函数也是python中的一个内置函数,map在这里的意思是映射的意思,会根据提供的函数对指定序列做映射。map函数会返回一个迭代器,如果要转换为列表,可以使用 list() 来转换
	map(function,iterable),  function>>>: 函数  ,iterable>>>: 可遍历对象
	
    l1 = [11,22,33,44,55]
    #def function(a):
    #    return a + 1
    result = map(lambda x :x+1,l1)
    print(list(result))   # [12, 23, 34, 45, 56]
    # print(dict(result))  # {}
    # print(tuple(result))  # ()
    """ 一般用列表来接收"""

2.max()\min()  

eg1:
    l1 = [11, 21, 2, 3, 2, 1, 2, 3, 2, 3, 2, 3, 2324, 242, 432, 43246, 456, 46, 345, 55345]
    result = max(l1)
    print(result)  # 55345

eg2:
        d1 = {
            'kiki': 999,
            'kimi': 1234,
            'jenny': 3456,
            'rose': 888 }
    方式一:
        def function(a):
            return d1.get(a)
        res = max(d1,key=function)
        print(res)  # jenny
    
    方式二:
        res = max(d1,key=lambda k:d1.get(k))
        print(res)  # jenny
    
	"""
        A-Z: 65-90
        a-z:97-122
                        """


15.open()

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
open() 是python的内置函数,可以打开文件对其进行操作

 Character Meaning
    'r'       open for reading (default) 打开可读文件
    'w'       open for writing, truncating the file first da
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists
    'b'       binary mode
    't'       text mode (default)
    '+'       open a disk file for updating (reading and writing)
    'U'       universal newline mode (deprecated)

16.pow() 幂指数

print(pow(2,3))  # 8
print(pow(2,4))  # 16
print(pow(2,9))  # 512

17.range() xrange()

print(range(100))  # range(0, 100)

18.round()

print(round(67.3))  # 67
print(round(45.8))  # 46

19.sum()

print(sum([12,34,56,67,89]))  # 258

21.reduce()

reduce
   """ reduce  传多个值  返回一个值 """
    from functools import reduce
    l1 = [11, 22, 33, 44, 55, 66]
    result = reduce(lambda a,b:a*b,l1)
    print(result)  # 1275523920
    
    """步骤:
    1.导入 reduce
    2.获取列表
    3.获得a=11,b=22 并相乘得242,再赋值给a
    4,a=242,或者b=33,a,b相乘得7986再赋值给a
    依次循环,直至结束"""

21.zip()

迭代器

​ 迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次'迭代',而每次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代

​ 通过索引的方式进行迭代取值,实现简单,仅适用于字符串,列表,元组,但没有索引的字典、集合等非序列类型,必须找到一种不依赖索引来进行迭代取值的方式,这就用到了迭代器。

可迭代对象

1.可迭代对象

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

2.可迭代对象的范围

可迭代对象
string  list dict  tuple  set  文件对象  
不可迭代对象
int  float bool 函数对象

3.可迭代的含义

迭代:更新换代(每次更新都必须要依赖上一次的结果)

	eg: 手机app更新(版本迭代)

可迭代再python中可以理解为是否支持for循环

迭代器对象

1.迭代器对象
	是由可迭代对象调用__iter__方法产生
	迭代器对象判断的本质:看内置是否有__iter__和__next__
2.迭代器对象的作用
	提供了一种不依赖于索引取值的方式
	正因为有迭代器的存在  我们的字典 集合才能够被for循环
3.迭代器对象实操
    S1 = 'hello'  # 可迭代对象
    res = S1.__iter__()   # 迭代器对象  本质在调用S1.__iter__(),返回S的迭代器对象  可简写iter(S1)
    print(res.__next__())  #  h 迭代取值   for循环的本质
    print(res.__next__())  # e  可简写next(res)
    print(res.__next__())  # l
    """一旦__next__ 取不到值  会直接报错"""
4.注意事项
	可迭代对象调用__iter__会成为迭代器对象,迭代器对象如果还调用__iter__不会有任何变化  还是迭代器对象本身
	

迭代器的优缺点

优点

1.为序列和非序列类型提供了一种统一的迭代取值方式
2.惰性计算: 迭代器对象表示的是一个数据流,需要时才去掉调用__iter__来计算出一个值,迭代器可以存放无限大的数据,但是同一时间内存只能有一个值,但是列表需要把所有的元素都存放在内存中,受内存大小的限制,能存放的数据是有限的

缺点

1.除非取尽,否则无法获取迭代器的长度
2.只能取下一个值,不能回到开始,迭代器产生后的唯一目标就是重复执行next方法直到值取尽

for循坏内部原理

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

异常处理

1.异常
	异常就是代码运行报错,行业俗称叫bug
	代码运行中一旦遇到异常会直接结束整个程序的运行,我们在编写代码的过程中要尽可能的避免
2.异常分类
	语法错误
		不允许出现,一旦出现立刻改正 
	逻辑错误
		允许出现的,因为它一眼发现不了,代码运行之后才可能会出现
3.异常结构
	错误位置 # File "D:/PycharmProjects/test15/02 常见内置函数.py", line 89,name = kiki
	错误类型  # NameError
	错误详情  # name 'kiki' is not defined

标签:__,内置,函数,迭代,对象,result,l1,print
From: https://www.cnblogs.com/zhanglanhua/p/16792833.html

相关文章

  • 函数内置方法与迭代器
    重要内置函数zip将多个可迭代对象组合起来,然后可以用列表一次性将结果存入列表、元组或者字典for循环可以把元素以此取出fliter特别需要注意到一点是在python2.7版......
  • 常见内置函数及迭代器相关基础
    昨日内容回顾算法简介及二分法算法是解决一类问题的逻辑方法。二分法是最简单的算法,主要用来查找有序数据列表中指定数据。三元表达式三元表达式适用于编写简单的......
  • 内置函数与迭代对象
    今日内容总结内置函数重要内置函数1.zip()将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,一般会用listuo输出为列表利用*......
  • 内置函数与迭代器
    内置函数与迭代器重要内置函数补充1.zip()拉链zip可以将两个列表内的数据值按照索引位置一一对应组合成元组eg:l1=[1,2,3,4]l2=[5,6,7,8,9]......
  • 重要内置函数、常见内置函数、可迭代对象、迭代器对象、for循环的本质、异常捕获处理
    重要内置函数#zip拉链zip函数是可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器,类型为元组。l1=[11,22,33]l2=['a'......
  • 内置函数与迭代器
    目录一.重要内置函数1.zip2.filter3.sorted二.常见内置函数了解1.abs()绝对值2.all()3.any()4.bin()、oct()、hex()、int()5.bytes()6.callable()7.chr()ord()8.dir()9......
  • 常用内置函数+可迭代对象,迭代对象
    目录常用内置函数+可迭代对象,迭代对象重要内置函数常见内置函数可迭代对象迭代器对象for循环的本质常用内置函数+可迭代对象,迭代对象重要内置函数zip()#拉链,可有多个......
  • 迭代对象与迭代器对象,for本质 异常捕捉
    可迭代对象可迭代对象对象内置有双下iter(__iter__)方法的都可以称为可迭代对象。#内置方法就是我们在.调出来的可迭代对象范围分为两种一种是不可迭代对象,一种是......
  • php函数复习
    $c=(array)json_decode(@$_GET['c']);//数组里面包含元素m:2023n是array的元素个数为0第0个元素是arrayif(is_array($c)&&!is_numeric(@$c["m"])&&$c["m"]>2022)......
  • ALV DMEO 02:REUSE_ALV_GRID_DISPLAY 使用函数填充 FIELDCAT
    以下是纯顾问群~QQ群 :SAP干货铺,  群号:775662808所有群管理严格,严格禁止一切外来链接、招聘、广告等垃圾信息!如果您觉得这篇干货文章有用,请帮忙转载、分享给更多人,谢谢~......