2016 - 2024

感恩一路有你

Python复合列表的遍历方法

浏览量:4325 时间:2024-08-02 21:24:38 作者:采采

在这篇文章中,我们将学习如何遍历 Python 中复合列表。Python 中的列表非常灵活,通过将新列表充当元素保存到列表中的方式,可以任意组合出及其复杂的树形结构。

编写代码

首先,我们需要启动已安装的 Python IDLE 程序,然后点击菜单栏上的 “File > New File” 新建一个 Python 源代码文件(由 Python 内置的文本编辑器打开)。

在新打开的代码编辑窗口中,编写一段遍历输出一维列表中所有元素的代码。为了指明输出的内容是什么,可以在输出列表元素之前写上一条打印语句。

我们可以通过内置函数 `print()` 输出复合列表的值,并尽可能多套几层,增加遍历的难度。

执行代码

代码编写完毕后,点击菜单栏上的 “File > Save”(或者 Ctrl S)保存新建的源代码文件(记得取一个有意义的名字并存放在容易找到的位置)。

保存完代码之后,可以通过菜单栏上的 “Run > Check Module”(或者 ALT X)执行代码检查,如果代码有语法错误,它会弹出错误提示,并用红色标记出源代码中的出错位置。如果没有问题,则什么也不会发生。

执行代码语法检查后,点击菜单栏上的 “Run > Run Module”(或 F5),运行编辑器中的 Python 代码。执行完毕后,可以在 Python Shell 中见到输出的内容。

遍历复合列表

我们可以写一个遍历复合列表的 循环,将其中的所有元素输出。写完代码后执行。查看 Shell 中的输出,发现其中仍然有子列表的元素没有遍历到。

为了遍历列表中的列表元素,可以通过内置函数 `isinstance()` 判断列表中的元素是否是一个列表。如果是,则继续用 `` 循环遍历其中的元素。不是,则直接输出。修改遍历复合列表的代码,增加遍历列表元素的代码。写完代码后,按 F5 运行代码。查看 Shell 中的输出内容,发现第 1 级列表中的子列表元素已经可以正常输出了。

为了遍历更多层的子列表元素,继续向代码中添加更多的 `if` 和 `` 语句。写好代码后,继续按 F5 运行。查看 Shell 中的输入,发现总共写了 3 层 `` 循环后,已经可以遍历复合列表中的所有元素了。可是,如果列表层次再多一些,难道要继续写内层的处理循环吗?

递归实现

仔细观察 `if` 和 `` 嵌套的代码,发现它符合某种模式。这种模式似乎可以用递归来实现。而且递归可以支持无限层次的列表嵌套。根据之前的复合列表遍历代码,定义一个打印列表元素的 `printList()` 函数,然后调用该函数打印复合列表中的元素。

为了让打印的列表看上去更加直观,可以根据列表的级别,添加指定数量的 ‘-’ 字符。根据这一想法,可以实现一个改进版的 `printList2()` 函数。然后执行 F5 测试一下。OK,输出很正常。

测试函数

我们可以再写个测试函数测试一下。

```python

def test():

composite [1, [2, [3, 4], 5], [6, 7], 8]

printList(composite)

```

增加自定义间隔

为了让用户能够自定义间隔增长的参数,我们可以再次改进代码,实现 `printList3()` 函数。

```python

def printList3(lst, level0, interval4):

'''自定义间隔增长的复合列表打印函数'''

for i in lst:

if isinstance(i, list):

printList3(i, level interval, interval)

else:

print('-' * level, i)

```

然后运行测试一下,传入不同的参数并运行代码。OK,一切正常!

结论

通过本文的学习,我们了解了 Python 复合列表的遍历方法。我们可以通过 `` 循环和递归来遍历列表中的所有元素,并且可以通过自定义函数的参数来控制输出格式。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。