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

news/2024/7/19 8:46:40 标签: python, 爬虫, numpy

一、可迭代的对象(iteratle_object)

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

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

二、for循环迭代示例

python_9">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.niftyadmin.cn/n/80923.html

相关文章

LeetCode 记录

剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。LeetCode class MinStack { public:/** initialize your data structure here. */sta…

看见统计——第四章 统计推断:频率学派

看见统计——第四章 统计推断:频率学派 接下来三节的主题是中心极限定理的应用。在不了解随机变量序列 {Xi}\{X_i\}{Xi​} 的潜在分布的情况下,对于大样本量,中心极限定理给出了关于样本均值的声明。例如,如果 YYY 是一个 N(0&am…

Python 异步: 同时运行多个协程(10)

asyncio 的一个好处是我们可以同时运行许多协程。这些协同程序可以在一个组中创建并存储,然后同时一起执行。这可以使用 asyncio.gather() 函数来实现。 让我们仔细看看。 1. 什么是 Asyncio gather() asyncio.gather() 模块函数允许调用者将多个可等待对象组合在一…

因果推断7--深度因果模型综述(个人笔记)

目录 0摘要 1介绍 2预习 3治疗和指标 4深层因果模型的发展 4.1发展时间表 4.2模型分类 5典型的深层因果模型 6实验指南 6.1数据集 6.2code 6.3实验 7结论 参考 编码 1.自编码器(AE): 2.去噪自编码器(DAE) 3.变分自编码器VAE 4.去耦变分自编码 文章…

【2021/推荐/社交网络】Socially-Aware Self-Supervised Tri-Training for Recommendation

部分公式、图表和排版等显示可能异常,可在个人公众号(码农的科研笔记)进行全文免费阅读。 【2021/推荐/社交网络】Socially-Aware Self-Supervised Tri-Training for Recommendation 原文:https://dl.acm.org/doi/10.1145/3447548.3467340 源码:[伯乐 SEPT]、https://git…

Python 分支与循环

1. if 条件语句 语法: if 条件: 代码块 # 条件为真执行 else: # else 可选代码块 # 条件为假执行示例: n int(input(请输入一个数字:)) if n > 0:print(%s 大于 0 % n) else:print(%s 小于 0 % n)if 语句支…

【人工智能AI】一、NoSQL 企业级基础入门《NoSQL 企业级基础入门与进阶实战》

写一篇介绍什么是NoSQL的技术文章,分5个章节,每个章节细分到3级目录,重点介绍一下优缺点,适用场景,未来发展趋势等。 一、NoSQL简介 1.1 什么是NoSQL NoSQL(Not only SQL),意思是“…

Python--getattr、__getattr__、__getattribute__,倔强一下

反射前面我们已经学过了,那么为什么还要写这一篇呢,因为__getattribute__这个属性拦截器,但是在某些情况下使用起来,对应的意义不一样。除了属性拦截器之外,它也能跟反射达到类似的效果,至于它的称呼&#…