当前位置:首页 » 《休闲阅读》 » 正文

【Python】进阶学习:列表推导式如何使用两个for循环

16 人参与  2024年03月27日 10:05  分类 : 《休闲阅读》  评论

点击全文阅读


【Python】进阶学习:列表推导式如何使用两个for循环

在这里插入图片描述

? 个人主页:高斯小哥
? 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程? 希望得到您的订阅和支持~
? 创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


?文章目录?

?一、引言?二、一个for循环的列表推导式?三、两个for循环的列表推导式?四、列表推导式的嵌套循环与普通循环的对比?五、列表推导式中的条件表达式?六、举一反三:更多应用场景生成字典列表生成字符串列表生成列表的列表(二维列表)使用列表推导式进行数值计算 ?七、总结与收获

?一、引言

  Python的列表推导式(List Comprehension)是一种强大而简洁的工具,它可以用来创建列表。通常,我们可能只使用一个for循环来创建列表,但Python也允许我们在列表推导式中使用两个或更多的for循环。本文将通过通俗易懂的方式,讲解如何在列表推导式中使用两个for循环,并通过实例举一反三,让你看完受益良多。

?二、一个for循环的列表推导式

  在开始讨论两个for循环的列表推导式之前,我们先回顾一下一个for循环的列表推导式。其基本语法如下:

[expression for item in iterable]

这里的expression是对item的某种操作,item是从iterable(可迭代对象,如列表、元组、集合、字符串、字典等)中取出的每个元素。

举个例子,假设我们有一个数字列表,想要生成一个新列表,其中的元素是原列表中每个数字的平方:

numbers = [1, 2, 3, 4, 5]squares = [x**2 for x in numbers]print(squares)  # 输出: [1, 4, 9, 16, 25]

?三、两个for循环的列表推导式

现在,我们来看如何使用两个for循环在列表推导式中。其基本语法如下:

[expression for item1 in iterable1 for item2 in iterable2]

这种结构会首先遍历iterable1中的每一个item1,然后对于每一个item1,它都会遍历iterable2中的每一个item2expression则是对item1item2的某种操作。

假设我们有两个列表,一个是颜色列表,另一个是大小列表。我们想要生成一个新的列表,其中的元素是每种颜色和大小的组合:

colors = ['red', 'green', 'blue']sizes = ['small', 'medium', 'large']# 使用两个for循环的列表推导式combinations = [(color, size) for color in colors for size in sizes]print(combinations)  # 输出: [('red', 'small'), ('red', 'medium'), ('red', 'large'), ('green', 'small'), ('green', 'medium'), ('green', 'large'), ('blue', 'small'), ('blue', 'medium'), ('blue', 'large')]

这个列表推导式会首先遍历colors列表中的每个颜色,然后在内部循环中遍历sizes列表中的每个大小,生成一个元组(color, size),并添加到新列表中。

?四、列表推导式的嵌套循环与普通循环的对比

  为了更好地理解列表推导式中的嵌套循环,我们可以将其与普通的嵌套循环进行比较。以下是一个普通嵌套循环的例子,它实现了与上面列表推导式相同的功能:

colors = ['red', 'green', 'blue']sizes = ['small', 'medium', 'large']combinations_normal = []for color in colors:    for size in sizes:        combinations_normal.append((color, size))print(combinations_normal)  # 输出与列表推导式相同

虽然这两种方式都能达到同样的效果,但列表推导式的语法更简洁,更易于阅读和理解。

?五、列表推导式中的条件表达式

  除了基本的操作外,我们还可以在列表推导式中加入条件表达式,进一步筛选结果。条件表达式使用if关键字,并放在for循环之后。

假设我们只想获取大小为’medium’的颜色组合:

colors = ['red', 'green', 'blue']sizes = ['small', 'medium', 'large']medium_combinations = [(color, size) for color in colors for size in sizes if size == 'medium']print(medium_combinations)  # 输出: [('red', 'medium'), ('green', 'medium'), ('blue', 'medium')]

这里,if size == 'medium'是一个条件表达式,它确保只有当size为’medium’时,对应的(color, size)元组才会被添加到新列表中。

?六、举一反三:更多应用场景

  列表推导式不仅限于生成元组列表,它还可以用来生成任何类型的列表,包括数字列表、字符串列表、字典列表等。下面再举几个例子:

生成字典列表

keys = ['a', 'b', 'c']values = [1, 2, 3]# 使用zip函数和列表推导式生成字典列表dict_list = [{k: v} for k, v in zip(keys, values)]print(dict_list)  # 输出: [{'a': 1}, {'b': 2}, {'c': 3}]

生成字符串列表

words = ['hello', 'world', 'python']# 将每个单词转换为大写,并生成字符串列表uppercase_words = [word.upper() for word in words]print(uppercase_words)  # 输出: ['HELLO', 'WORLD', 'PYTHON']

生成列表的列表(二维列表)

rows = 3cols = 4# 生成一个3x4的二维列表,初始值都是0matrix = [[0 for _ in range(cols)] for _ in range(rows)]print(matrix)  # 输出: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

使用列表推导式进行数值计算

numbers = [1, 2, 3, 4, 5]# 计算列表中每个数字的平方根(使用math库)import mathsquare_roots = [math.sqrt(num) for num in numbers]print(square_roots)  # 输出: [1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979]

?七、总结与收获

  通过本文的学习,我们掌握了如何在Python的列表推导式中使用两个for循环,并通过实例展示了其强大的功能和灵活性。列表推导式不仅使代码更加简洁易读,而且提高了编程效率。通过举一反三的方式,我们还探索了列表推导式在更多应用场景中的使用,如生成字典列表、字符串列表、二维列表以及进行数值计算等。

  在使用列表推导式时,要注意保持代码的清晰和可读性,避免过度嵌套和复杂的表达式。同时,也要善于利用条件表达式对结果进行筛选,以得到更符合需求的结果。

  希望本文对你有所启发,让你在Python编程的道路上更进一步。通过不断实践和探索,你可以发现更多列表推导式的妙用,并将其应用于实际项目中,提升编程效率和代码质量。


点击全文阅读


本文链接:http://zhangshiyu.com/post/86359.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1