Python常见的数据结构的遍历

 更新时间:2026年01月26日 09:35:50   作者:June bug  
文章介绍了Python中可迭代对象的定义和常见类型,包括字符串、列表、元组、字典、集合、range对象、文件对象等,还介绍了不能直接遍历的类型,如数字、布尔值、None等,通过enumerate、zip和生成器等特殊方法,可以实现更复杂的遍历操作,感兴趣的朋友跟随小编一起看看吧

严格来说,任何实现了__iter__方法或__getitem__方法的对象都可以被遍历。
但是要注意,不是所有东西都适合遍历,比如数字(整数、浮点数)就不能直接遍历,除非将其包装成范围或序列。
在Python中,我们通常说“可迭代对象”(Iterable)是指那些能够一次返回一个元素的对象。例如,在for循环中,我们遍历的就是可迭代对象。

不是所有东西都可以直接遍历,但Python中大多数容器和序列都可以! 主要有以下几类可遍历的对象:

一、可以直接遍历的常见类型:

1.字符串- 遍历字符

s = "hello"
for char in s:  # 'h' → 'e' → 'l' → 'l' → 'o'
    print(char)

2.列表- 遍历元素

lst = [1, 2, 3]
for item in lst:  # 1 → 2 → 3
    print(item)

3.元组- 遍历元素

tup = (1, 2, 3)
for item in tup:  # 1 → 2 → 3
    print(item)

4.字典- 默认遍历键,也可遍历值或键值对

d = {'a': 1, 'b': 2}
# 默认遍历键
for key in d:  # 'a' → 'b'
    print(key)
# 遍历值
for value in d.values():  # 1 → 2
    print(value)
# 遍历键值对
for key, value in d.items():  # ('a', 1) → ('b', 2)
    print(key, value)

5.集合- 遍历元素(无序)

s = {1, 2, 3}
for item in s:  # 顺序不确定
    print(item)

6.range对象- 遍历数字序列

for i in range(5):  # 0 → 1 → 2 → 3 → 4
    print(i)

7.文件对象- 遍历行

with open('file.txt') as f:
    for line in f:  # 一行一行读取
        print(line)

二、需要特殊方法才能遍历的:

8.enumerate对象- 同时获取索引和值

s = "abc"
for i, char in enumerate(s):  # (0,'a') → (1,'b') → (2,'c')
    print(i, char)

9.zip对象- 同时遍历多个序列

names = ["Alice", "Bob"]
ages = [25, 30]
for name, age in zip(names, ages):  # ("Alice",25) → ("Bob",30)
    print(name, age)

10.生成器- 惰性遍历

# 生成器表达式
gen = (x*2 for x in range(3))  # 0 → 2 → 4
for num in gen:
    print(num)

三、不能直接遍历的常见类型:

1.数字(整数、浮点数)- ❌ 不能遍历

num = 123
for digit in num:  # ❌ TypeError: 'int' object is not iterable
    print(digit)

需要先转换:

num = 123
for digit in str(num):  # '1' → '2' → '3'
    print(digit)

2.布尔值- ❌ 不能遍历

flag = True
for item in flag:  # ❌ TypeError: 'bool' object is not iterable
    print(item)

3.None- ❌ 不能遍历

value = None
for item in value:  # ❌ TypeError: 'NoneType' object is not iterable
    print(item)

4.单个对象- ❌ 需要容器包装

obj = "I'm a string, but..."
for char in obj:  # ✅ 可以,因为字符串是可迭代的
    print(char)
num = 42
for item in num:  # ❌ 不行
    print(item)
# 需要包装成容器
for item in [num]:  # ✅ 可以
    print(item)

四、判断是否能遍历的技巧:

from collections.abc import Iterable
print(isinstance("hello", Iterable))  # ✅ True
print(isinstance([1,2,3], Iterable))  # ✅ True
print(isinstance(123, Iterable))      # ❌ False
print(isinstance(True, Iterable))     # ❌ False
print(isinstance(None, Iterable))     # ❌ False

总结:

  • 可以遍历的:字符串、列表、元组、字典、集合、range、文件等容器
  • 不能直接遍历的:数字、布尔值、None等单一值
  • 核心原则:如果包含多个元素(序列、集合、映射),通常可以遍历;如果是单个值,通常不能直接遍历

记住:当你看到 for x in y: 时,y 必须是一个可迭代对象(包含多个元素)。

到此这篇关于Python常见的数据结构的遍历的文章就介绍到这了,更多相关python数据结构的遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+OpenCV六种实时图像处理详细讲解

    Python+OpenCV六种实时图像处理详细讲解

    OpenCV常用的图像处理为阈值二值化、边缘检测、轮廓检测、高斯滤波、色彩转换、调节对比度。本文主要介绍了利用Python和OpenCV对实时图像进行上述六种操作的详细讲解,感兴趣的可以了解一下。
    2021-11-11
  • python文件读取失败怎么处理

    python文件读取失败怎么处理

    在本篇文章里小编给大家分享的是关于python文件读取失败怎么处理的相关文章,需要的朋友们参考下。
    2020-06-06
  • python 利用pyttsx3文字转语音过程详解

    python 利用pyttsx3文字转语音过程详解

    这篇文章主要介绍了python 利用pyttsx3文字转语音过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中plt.scatter函数的具体使用

    Python中plt.scatter函数的具体使用

    plt.scatter 是 Matplotlib 中的一个函数,用于绘制散点图,本文主要介绍了Python中plt.scatter函数的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • Python 实现定积分与二重定积分的操作

    Python 实现定积分与二重定积分的操作

    这篇文章主要介绍了Python 实现定积分与二重定积分的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python必学知识之文件操作(建议收藏)

    python必学知识之文件操作(建议收藏)

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。下面这篇文章主要给大家介绍了关于python必学知识之文件操作的相关资料,需要的朋友可以参考下
    2021-05-05
  • Blender Python编程实现批量导入网格并保存渲染图像

    Blender Python编程实现批量导入网格并保存渲染图像

    这篇文章主要为大家介绍了Blender Python 编程实现批量导入网格并保存渲染图像示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Python中pandas的dataframe过滤数据方法

    Python中pandas的dataframe过滤数据方法

    这篇文章主要介绍了Python中pandas的dataframe过滤数据方法,Pandas是另外一个用于处理高级数据结构和数据分析的Python库,Pandas是基于Numpy构建的一种工具,需要的朋友可以参考下
    2023-07-07
  • Python读取JSON文件及一些常见的陷阱和改进方法

    Python读取JSON文件及一些常见的陷阱和改进方法

    在Python编程中处理JSON文件是一项基本但关键的技能,文章通过一个简单的读取JSON文件的代码示例出发,分析了代码中存在的问题,将遇到的问题解决方法介绍也非常详细,需要的朋友可以参考下
    2024-10-10
  • Python正则抓取网易新闻的方法示例

    Python正则抓取网易新闻的方法示例

    这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下
    2017-04-04

最新评论