首页 > 编程语言 >Python基础17

Python基础17

时间:2023-06-02 15:44:54浏览次数:46  
标签:__ .__ 迭代 17 Python 基础 iter next print

可迭代对象

什么是可迭?

  言外之意就是更新换代,每次的更新都是依赖上一次的结果

什么是可迭代对象

  就是内置有__iter__()方法的都可以称之为可迭代对象

    内置:内部自带可以直接使用的

八种数据类型

  可迭代对象:

    字符串、列表、元组、字典、集合、文本对象

    整型、浮点型、布尔型都不是

 

代码

  可迭代对象调用__iter__方法就变成‘迭代器对象’

d = [1, 2, 3]
res = d.__iter__()
print(res)  # <list_iterator object at 0x0000021FA1D193F0>

  一般情况下,双下划线开头都方法都有一个预支对应的简化方式   名字+()

迭代器对象

什么是迭代器对象

  既内置iter()又内置了next()方法就是迭代器对象

  文件对象本身就具备__iter__()和__next__()方法,即是可迭代对象又是迭代器对象

迭代器对象数据类型

  str、list、dict、tuple、set、文件等

迭代器对象作用

  其实就是一种不依赖于索引取值的方式

  可迭代对象多次调用__iter__()方法之后还是迭代器对象,所以你只需要调用一次即可

d = [1, 2, 3]
d.__iter__().__iter__().__next__()
print(d.__iter__().__iter__().__next__())
d = [1, 2, 3]
res=d.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
# 打印值为123

易错题

d = [1, 2, 3]
res = d.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
# 打印值为123

print(d.__iter__().__next__())
print(d.__iter__().__next__())
print(d.__iter__().__next__())
# 打印结果111
# 循环取出里面的值,iter()一次即可,多次iter()打印取出都是同一个值

异常捕捉

什么是异常

  错误发生的信息,如不对此处理,那么以后的程序不能正常运行

异常的分类

  1.  Traceback

    是异常所在的位置,一般情况我们直接可以定位到异常发生的位置所在

  2. XXXError
    错误的类型
  3. XXXError后面的详细信息
    重要,一般情况我们直接看错误发生的详细信息

  4. 异常类型

    语法错误

      坚决不允许,容易解决,在Python编辑器就可以定位到

    逻辑错误

      是被允许出现的,但是我们写代码时,尽量避免逻辑错误发生

3.错误类型

错误的类型
print(name) # NameError
l = [1,2,3,4]
print(l[5]) # IndexError

d = {'a':1}
print(d['b'])  # KeyError

1/0  # ZeroDivisionError

4.如何解决异常

语法结构

try
被监测的代码:一般是可能会发生的错误
    except 错误类型1 as e
           print(e)
    except 错误类型2 as e
        print(e)
    except 错误类型3 as e
        print(e)
    except 错误类型4 as e
         print(e)
try:
    # print(name)
    # 1/0
    # l = [1,2,3]
    # print(l[6])
    # 1/0
    d = {'a':1}
    print(d['aaa'])
except NameError as e:
    print(e) # name 'name' is not defined
except IndexError as e:
    print(e) # name 'name' is not defined
except Exception as e:
    print(e)
else:
    print('看一下else什么时候走的?')
finally:
    print('看一下finally什么时候走?')

  没有异常else会走,有异常else不会走

  finally不管有没有异常都会走

try:
    pass
except NameError:
    pass

try:
    pass
finally:
    pass

# 这里面你只需要记住try和else不能单独使用,

assert:断言

  assert 条件 条件必须成立,如果不成立,代码在这一行直接中断

for循环的原理

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# 循环打印出列表中的每一个元素,但是不能使用for循环,必须要使用__next__()取值
res = l.__iter__()
while True:
    try:
        print(res.__next__())
    except Exception:
        break

for j in l:
    print(j)

count = 0
while count < len(l):
    if count == len(l):
        break
    else:
        # print(l[count])
        # count += 1
        print(res.__next__())
        count += 1

for循环的原理

  1.先把关键字in后面的可迭代对象先调用inter()

  2.while循环,next()取值

  3.for的内部当出现异常的时候,做捕捉处理: stopiteration break

迭代取值和索引取值

迭代取值

  1.不依赖索引取值

  2.只能从左往右依次取值,不能重复取值

索引取值

  1.必须依赖索引取值

  2.可以重复取值

  3.必须容器类型数据

 

标签:__,.__,迭代,17,Python,基础,iter,next,print
From: https://www.cnblogs.com/shanghaipudong/p/17451975.html

相关文章

  • python-pool.map()用法
    ThreadPool().map()是Python中multiprocessing库中的一个函数,用于并行地处理可迭代对象中的元素。它的基本语法如下:其中,get_ans是一个处理元素的函数,num代表可迭代对象中的每个元素,list1是一个可迭代对象,例如列表、元组、集合等。processes参数指定了线程池中的线程数量,res是处理......
  • Linux基础(七)
    推荐步骤:在Centos01主机上添加Linux磁盘,指定磁盘空间大小30G,创建三个三个分区,将三个分区转换为LVM逻辑卷将三个分区添加到物理卷,创建卷组名字hb3051将三个物理卷添加到卷组,指定逻辑卷名字为自己名字全屏,指定逻辑卷磁盘空间为20G,格式化LVM为xfs文件系统创建目录/lvm,修改/etc/fstab文......
  • 关于python下载pyautogui库报错【ERROR: Command errored out with exit status 1:】
    问题出现: 解决方案:先执行该命令  【pipinstall--upgradesetuptools&&python-mpipinstall--upgradepip】之后再重新执行下载命令  【pipinstallpyautogui-ihttps://pypi.tuna.tsinghua.edu.cn/simple】即可......
  • python使用cx_Oracle连接timesten
    环境:OS:WindowsDB:18.1  1.配置环境变量TNS_ADMIN=C:\TimesTen\tt181_64\network\admin 2.创建tnsnames.ora文件在timesten安装目录下C:\TimesTen\tt181_64\network\admin\samples拷贝一个tnsnames.ora到C:\TimesTen\tt181_64\network\admin进行修改 3.修改tnsnames......
  • 在线教育_Day03_项目前端相关基础知识一
    一、前端开发环境搭建1.1前端开发概述前端工程师“Front-End-Developer”源自于美国。大约从2005年开始正式的前端工程师角色被行业所认可,到了2010年,互联网开始全面进入移动时代,前端开发的工作越来越重要。最初所有的开发工作都是由后端工程师完成的,随着业务越来越繁杂,工作量变大,......
  • 【pandas基础】--日期处理
    时间序列数据是数据分析中一类常见且重要的数据。它们按照时间顺序记录,通常是从某些现象的观察中收集的,比如经济指标、气象数据、股票价格、销售数据等等。时间序列数据的特点是有规律地随着时间变化而变化,它们的变化趋势可以被分析和预测。时间序列分析是一种用于预测未来值或......
  • 《加密与解密》- 第一章 - 基础知识 - 笔记
    (纠正了书中一些不正确的地方,如P11中2**64bytes等于16TB已修改为16EB)1.1什么是加密与解密1.1.1软件的加密与解密略1.1.2软件逆向工程内容:去除使用限制或者添加功能获得源代码硬件的复制和模拟要求品质:保持好奇,崇尚自由勤奋+毅力精通至少一门编程语言,尤其是编程思......
  • 【学习笔记】(2) 基础莫队——优美的暴力
    莫队,是莫涛发明的一种解决区间查询等问题的离线算法,基于分块思想,复杂度一般为\(\mathcal{O}(N\sqrt{N})\)普通莫队例题:P1972[SDOI2009]HH的项链(其实这道题用莫队过不了,就仅是用来引入莫队而已)题意:长度为\(N\)的序列,\(M\)次询问,每次询问一段闭区间内有多少个不同的数。......
  • python3 -m pip install --upgrade的作用
    `python3-mpipinstall--upgrade`是一个命令行指令,用于升级Python包管理器(pip)已安装的包。具体来说,命令的不同部分的含义如下:-`python3`:这是一个命令,用于在命令行中运行Python解释器。-`-mpip`:这是一个Python的内置模块,用于管理Python包的安装和卸载。-`inst......
  • [Python]-numpy模块-反转数组的三种方法
    给定一个一维numpy数组,反转数组的三种方法:切片索引numpy.flipud()函数numpy.flip()函数importnumpyasnpa=np.array([1,2,3,4,5])#切片索引ans1=a[::-1]print(ans1)#[54321]#numpy.flipud()函数ans2=np.flipud(a)print(ans2)#[54321]#n......