目录

  • 常见内置函数

  • 可迭代对象

  • 迭代器对象

  • for循环的本质

常见内置函数

1.abs() print(abs(-30))     # 30 取绝对值
2.all()与any()
  l1 = [1, 3, 5, 0]
  print(all(l1))            # False 判断列表数据中的布尔值类型(相当于 and)
  print(any(l1))            # True 判断列表数据中的布尔值类型(相当于 or)
3.ASCII() 英语与二进制数的转换
4.bin()、oct()、hex() 十进制与二进制、八进制、十六进制的转换
5.bool()、dict()、float()、int()、list()、set()、str()、 bytes()、type()
  数据类型转换与查看数据类型
6.callable() 判断是否可以调用
7.ord()与chr()
  print(ord('c'))           # 99 字母对应数字数
  print(chr(99))            # c 数字数对应字母
8.dir()                     # 查看数据类型中的数据
9.divmod(x,y)               # x/y 的整数部分与余数部分组成元组
  print(divmod(88, 9))      # (9, 7)
10.enumerate()              # 枚举 将列表中的数据一个个for循环得出数据与对应的索引值
  l1 = [1, 3, 5]
  print(enumerate(l1))      # <enumerate object at 0x0000024396729F98>
  for i, j in enumerate(l1):
  print(i, j)
11.eval()、exec() 识别字符串中代码的运行
  res = 'print(123)'
  res1 ='for i in range(2):print(i)'
  eval(res)               # 123 识别简单的字符串中代码的运行
  exec(res1)              # 0 1 识别复杂的字符串中代码的运行
12.filter()               # 过滤序列中不符合条件的数据
13.format()               # 支持关键字取值(按k取值) 并且支持重复使用
14.help()                 # 查看帮助信息
15.id()                   # 查看内存地址
16.input()与print()       # 输入 输出
17.isinstance() 判断数据类型
  print(isinstance([1, 2, 3], int)) # False
18.len() 统计数据值个数
  l1 = (0, 1)
  print(len(l1))          # 2
19.map()                  # 映射 列表中所以数据增加或减少同一个数
20.max()与min()、sum()     # 最大值与最小值、求和
  l1 = [1, 2, 3]
  print(max(l1))          # 3
  print(min(l1))          # 1
  print(sum(l1))          # 6
21.next()                 # 将可迭代对象转换成迭代器对象
22.open()                 # 打开文件方式
23.pow()                  # 幂指数
  print(pow(2, 5))        # 32 2的5次方
24.range()                # 数据范围
  for i in range(3):
  print(i)                # 0 1 2
25.round()                # 四舍五入
  print(round(222.2))     # 222
26.zip()
  l2 = 'jason'
  res = zip(l2)
  print(list(res))        # [('j',), ('a',), ('s',), ('o',), ('n',)]

可迭代对象

1.概念
  迭代:更新换代,每次迭代使用上一次的结果
2.类型
  2.1.# int 不是可迭代对象
  2.2.# float 不是可迭代对象
  2.3.# bool 不是可迭代对象
  2.4.#函数名 不是可迭代对象
  2.5.# str.__iter__() 可迭代对象
  2.6.# list.__iter__() 可迭代对象
  2.7.# tuple.__iter__() 可迭代对象
  2.8.# set.__iter__() 可迭代对象
  2.9.# dict.__iter__() 可迭代对象
  2.10.# 文件 可迭代对象本身是迭代器对象
3.判断方式
  内置有__iter__方法的都可称为可迭代对象,可迭代对象支持for循环
4.举例
  while True:
  print('123')            # 不是可迭代对象


  count = 1
  while count < 4:
  print('123')            # 是可迭代对象
  count += 1

迭代器对象

1.作用:取值方式不依赖索引取值,可以对字典、元组无序数据类型循环取值
2.类型:
  str.__iter__().__next__()
  list.__iter__().__next__()
  tuple.__iter__().__next__()
  set.__iter__().__next__()
  dict.__iter__().__next__()
  with open(r'01常见内置函数.py',encoding='utf8') as f:
  f.__next__()
  f.__iter__().__next__()
3.判断方式
内置有__iter__与__next__方法的称为迭代器对象,可迭代对象先调用__iter__方法之后变成迭代器对象,迭代器对象调用多次__iter__都是它本身
4.迭代器对象取值
  4.1 列表取值
    l1 = [1, 2, 3, 4]
    res = l1.__iter__()
    print(res.__next__())         # 1
    print(res.__next__())         # 2
    print(res.__next__())         # 3
    print(res.__next__())         # 4
    print(res.__next__())         # 报错
  4.2 字典取值
    l1 = {'name':'jason','pwd':123}
    res = l1.__iter__()
    print(res.__next__())       # name
    print(res.__next__())       # pwd
  4.3 使用while循环取值
    l1 = [22, 34, 55, 67]
    res = l1.__iter__()
    count = 0
    while count < len(l1):
    print(res.__next__())
    count += 1
5.补充
  5.1 迭代器的反复使用
    5.1.1 每次都是产生一个新的迭代器对象
      l1 = {'name':'jason','pwd':123}
      print(l1.__iter__().__next__())      # name
      print(l1.__iter__().__next__())      # name
    5.1.2 每次使用的都是一个迭代器对象
      l1 = {'name':'jason','pwd':123}
      res = l1.__iter__()
      print(res.__next__())                # name
      print(res.__next__())                # pwd
    5.2 双下方法
      res = l.__iter__()                   # 可以简写iter(l)
      res.__next__()                       # 可以简写next(res1)
    5.3 迭代器对象的特殊地方
      可迭代对象与迭代器对象通过打印无法查看内部数据情况,目的是为 了节省内存

for循环的本质

1.语法结构:
for 变量名 in 可迭代对象:
2.循环步骤
  2.1 for会自动将in后面的数据调用__iter__()变成可迭代对象
  2.2 每次循环调用__next__()取值
  2.3 最后没有值__next__()会报错,但for能够自动处理该错误,让循环正常结束

 

 posted on 2022-07-11 22:08  拾荒菇凉  阅读(88)  评论(0)    收藏  举报