python中的for循环以及枚举函数enumerate()

news2024/11/15 2:15:33

一、可迭代的对象(iteratle_object)

python中可以使用for循环进行迭代的对象大致有以下几种类型:

  1. String(字符串)
  2. List(列表)
  3. Tuple(元组)
  4. Dictionary(字典)
  5. range()内置函数返回的对象

二、for循环迭代示例

1. 依次输出字符串"python"的字符
def print_string():
    string = "python"
    for s in string:
        print(s)

在这里插入图片描述

2. 依次输出列表中的元素
def print_list():
    list = ['a', 'b', 'c', 'd']
    for l in list:
        print(l)

在这里插入图片描述

3. 依次输出元组中的元素
def print_tuple():
    tuple = ('e', 'f', 'g', 'h')
    for t in tuple:
        print(t)

在这里插入图片描述

4. 依次输出字典中的元素
def print_dict():
    dict = {'Name': 'Tom', 'Age': 18, 'Sex': '男', 'Address': '深圳'}
    print('============= 方法1:通过迭代key,获取value ==============')
    for key in dict:
        print(key, ':', dict[key])

    print('============= 方法2:通过字典中自带keys()方法获取所有的key ==============')
    for key in dict.keys():
        print(key)

    print('============= 方法3:通过字典中自带values()方法获取所有的value ==============')
    for value in dict.values():
        print(value)

    print('============= 方法4: 遍历字典项 ==============')
    for item in dict.items():
        print(item)

    print('============= 方法5: 通过字典项遍历key和value ==============')
    for key, value in dict.items():
        print(key, ":", value)

在这里插入图片描述

5. 依次遍历range() 对象
def print_range():
    for i in range(5):
        print(i)

在这里插入图片描述

三、枚举函数enumerate()

enumerate(sequence, [start=0]):主要用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。

  • sequence – 一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置的值,默认从0开始。

(1)与普通for循环相比,使用enumerate()函数的for循环能更简便地访问到索引和对应的元素。

def print_enumerate():
    ls = ['a', 'b', 'c']

    print('============= 方法1: ==============')
    for i in range(len(ls)):
        print(i, ls[i])

    print('============= 方法2: ==============')
    for s in ls:
        print(ls.index(s), s)

    print('============= 方法3: ==============')
    for i, element in enumerate(ls):
        print(i, element)

    print('============= 方法4: ==============')
    for i, element in enumerate(ls, start=10):
        print(i, element)

在这里插入图片描述
(2)统计文件行数

# 这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
count=len(open(filepath,'r').readlines())

# 可以利用enumerate()
count=0
for index,line in enumerate(open(filepath,'r')):
    count+=1

四、列表推导式

列表推导式提供了一个更简单的创建列表的方法。常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句。 其结果将是一个新列表,由对表达式依据后面的 for 和 if 子句的内容进行求值计算而得出。

# 列表推导式
def print_ls():
    squares = [x ** 2 for x in range(10)]
    # 等价于
    # squares = []
    # for x in range(10):
    #     squares.append(x ** 2)
    print(squares)


def print_ls1():
    ls = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
    # 等价于
    # ls = []
    # for x in (1, 2, 3):
    #     for y in (2, 3, 4):
    #         if x != y:
    #             ls.append((x, y))
    print(ls)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

printk浅析

内核printk原理介绍 - 知乎 (zhihu.com)34.Linux-printk分析、使用prink调试驱动 (bbsmax.com)【原创】计算机自制操作系统(Linux篇)五:内核开发之万丈高楼从地起---printk(理清pintf/vprintf;sprintf/vsprintf ;fprintf/vfprintf) - 知乎 (z…

自抗扰控制ADRC之扩张观测器

目录 前言 1. 被控对象(被观测对象) 2.非线性观测器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.线性观测器 3.1仿真模型 3.2仿真结果 4.总结和学习问题 前言 什么叫观测器?为什么该类观测称为扩张观测器? :观测器可以理解为所观测…

组合数学原理与例题

目录 一、前言 二、计数原理 1、加法原理 2、分割立方体(lanqiaoOJ题号1620) 3、乘法原理 4、挑选子串(lanqiaoOJ题号1621) 5、糊涂人寄信(lanqiaoOJ题号1622) 6、战斗吧N皇后(lanqiaoO…

依次判断数组1对中的每个元素是否小于等于数组2中对应位置的每个元素numpy.less_equal()

【小白从小学Python、C、Java】【计算机等级考试500强双证书】 【Python-数据分析】 依次判断数组1对中的每个元素是否 小于等于数组2中对应位置的每个元素 numpy.less_equal() [太阳]选择题 以下错误的一项是? import numpy as np a np.array([1,2,3]) b np.array([1,3,2]) …

kubernetes 核心技术-Pod(1)

概述: 首先要知道 Pod 不是容器! 一、 基本概念 Pod 是 k8s 系统中可以创建和管理的最小单元。k8s 不会直接处理容器,而是podpod 包含多个容器(一组容器的集合)一个pod中容器共享网络命名空间pod是短暂的(生命周期) 二、Pod存在的意义 创建…

数据结构与算法总结整理(超级全的哦!)

数据结构与算法基础大O表示法时间复杂度大O表示法时间复杂度排序:最坏时间复杂度时间复杂度的几条基本计算规则内存工作原理什么是内存内存主要分为三种存储器随机存储器(RAM)只读存储器(ROM)高速缓存(Cach…

玄子Share-BCSP助学手册-JAVA开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言: 此文为玄子,复习BCSP一二期后整理的文章&#x…

多任务学习综述Multi-Task Deep Recommender Systems

Multi-Task Deep Recommender Systems: A Survey 最近看到一篇多任务学习的综述,觉得总结的不错,记录一下。 1. 简介 推荐系统天然具有多任务学习的需求,以视频推荐为例,用户具有点赞、评论、转发等不同的行为。多任务学习相比…

“生成音乐“ 【循环神经网络】

前言 本文介绍循环神经网络的进阶案例,通过搭建和训练一个模型,来对钢琴的音符进行预测,通过重复调用模型来进而生成一段音乐; 使用到Maestro的钢琴MIDI文件 ,每个文件由不同音符组成,音符用三个量来表示…

千锋教育嵌入式物联网教程之系统编程篇学习-04

目录 alarm函数 raise函数 abort函数 pause函数 转折点 signal函数 可重入函数 信号集 sigemptyset() sigfillset sigismember()​ sigaddset()​ sigdelset()​ 代码讲解 信号阻塞集 sigprocmask()​ alarm函数 相当于一个闹钟,默认动作是终止调用alarm函数的进…

HSCSEC 2023 个人练习

😋 大家好,我是YAy_17,是一枚爱好网安的小白。本人水平有限,欢迎各位大佬指点,欢迎关注😁,一起学习 💗 ,一起进步 ⭐ 。⭐ 此后如竟没有炬火,我便是唯一的光。…

聊一聊国际化i18n

i18n 概述i18n 是国际化的缩写,其完整的写法是 Internationalization,翻译为国际化。国际化是指在软件开发中对于不同语言和地区的支持。目的是为了让一款软件可以在不同的语言和地区环境下正常运行,使其适应全球各地的用户。这通常包括对语言…

Simulink 自动代码生成电机控制:低阶滑模观测器仿真实现及生成代码在开发板上运行

目录 理论参考 仿真实现 运行演示 总结 前段实时搭过高阶的滑模观测器,相比于高阶的,普通的滑模观测器计算量小更适合计算能力低的MCU,这里参考Microchip的16位MCU所使用的观测器,通过Simulink建模仿真实现系统控制&#xff0…

【查看多个长图】如何方便地在安卓手机上查看多个长图?如何更便捷地浏览长图合集

经常我会看到有些知识分享是通过长图形式进行。 往往在手机本地的图片浏览器中不能很方便地查看很多长图(能放大,但是横向滑动时,无法保证同样的放缩比例浏览同一个文件夹)。 我推荐下面一个APP和曲折解决办法。 1、perfect vi…

Error: Timeout trying to fetch resolutions from npm

总目录: 如何使用VSCode插件codesight扫描出前端项目的风险依赖包并借助 npm-force-resolutions 修复之?blackduck issue fix 文章目录问题描述【最终解决】我搜索到的解决方案npmjs 该依赖各版本列表及对应的被下载次数github issue 说降级到0.0.3就可以…

(十五)、从插件市场引入问题反馈页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,插件市场问题反馈页面 插件市场链接 dloud插件插件市场中找到问题反馈插件: 首先确保登录了dcloud账号。 使用hbuilderX导入插件到自己项目中。 选择合并导入。 从插件市场导入意见反馈页面的路径地址如下: 2,点击跳转到…

论文阅读_AlphaGo_Zero

论文信息 name_en: Mastering the game of Go without human knowledge name_ch: 在没有人类知识的情况下掌握围棋游戏 paper_addr: http://www.nature.com/articles/nature24270 doi: 10.1038/nature24270 date_publish: 2017-10-01 tags: [‘深度学习’,‘强化学习’] if: 6…

【C++封装】C++面向对象模型

文章内容如下: 1)成员变量和函数的存储 2)this指针 3)const修饰成员函数 4)有元 一。成员变量和函数的存储 C实现了封装,数据(-变量)和处理数据的操作(-函数)是分开存储的,C中的非静态数据…

SpringBoot Notes

文章目录1 SpringBootWeb快速入门1.1Spring官网1.2 Web分析2. HTTP协议2.1 HTTP介绍34 SpringBootWeb请求响应5 响应6 分层解耦6.1 三层架构6.1.1 三层架构介绍6.1.2 基于三层架构的程序执行流程:6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOC&…

[LeetCode周赛复盘] 第 333 场周赛20230219

[LeetCode周赛复盘] 第 333 场周赛20230219 一、本周周赛总结二、 [Easy] 6362. 合并两个二维数组 - 求和法1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6365. 将整数减少到零需要的最少操作数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6364. 无平方子集计数1. 题目描…