python中的枚举函数enumerate

lsixu / 2024-09-17 / 原文

# pytho中的enumerate()函数
# enumerate(sequence, [start=0]),其中sequence是一个可迭代序列,start是一个可选参数,表示序列下标的起始位置
# 这个函数可以用来遍历一个可迭代对象(如列表、元组、字符串)中的元素及其索引,并返回一个enumerate对象。
# 这个enumerate对象可以用在for循环中,返回的是一个tuple,包含索引和元素。

import re

data = ["百度", "新浪", "搜狐", "bilibili"]
# 正常for循环
for i in range(len(data)):
    print(i, data[i])

# 使用enumerate()函数
# 用item来接收enumerate对象,item是一个tuple,包含索引和元素
for item in enumerate(data):
    print(item)             # (0, '百度') (1, '新浪') (2, '搜狐') (3, 'bilibili')

# 枚举会自动跟踪列表中每个元素的索引,我们可以使用for循环方便地输出列表元素及其索引
for index, item in enumerate(data):
    print(index, item)


# 序列解包
# 序列解包是指将一个序列中的元素按照位置赋给一组变量。
# 序列解包可以让代码更加简洁,同时可以避免对序列元素的索引的管理。
s = """
<a href="http://www.baidu.com">百度一下</a>
<a href="#"></a>
<a href="http://www.sina.com">新浪一下</a>
<a href="#"></a>
<a href="http://www.souhu.com">搜狐一下</a>
<a href="#"></a>
<a href="http://www.bilibili.com">bilibili</a>
<a href="#"></a>
"""
data = re.finditer('<a href="(.*?)">(.*?)</a>', s, re.S)
# print(data)

# 获取所有a标签的href和文本内容
for i, item in enumerate(data):
        # print(i, item.group(1), item.group(2))
        if i % 2 == 0:
            print(i, item.group(1), item.group(2))