”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Python 列表的优雅而简单的方法:列表推导式

使用 Python 列表的优雅而简单的方法:列表推导式

发布于2024-11-08
浏览:730

An elegant and simple way to use Python Lists: List Comprehensions

您可能认为列表理解是一个高级概念。然而,在棘手的情况下,它只需一行就可以简化您的代码。是时候了解它是如何工作的了。我将用示例.

在初级水平上解释它

列表理解到底是什么?

您经常看到符号 l2 = [x 1 for x in l]。据说是这样的:

l2 = []
for x in l:
    x = x   1
l2.append(x)

对于这两种情况,如果我们以 l = [10, 100, 1000] 开始,l2 将是:

[11, 101, 1001]

第一个语法就是我们所说的列表理解.
您可能更喜欢通常的 for 循环,但在本文结束时,我保证您将有信心使用列表理解!

另外,我们从文档中查看详细的官方定义https://docs.python.org/3/tutorial/datastructs.html#list-com经理

列表推导式提供了一种创建列表的简洁方法。常见的应用是创建新列表,其中每个元素都是应用于另一个序列或可迭代的每个成员的某些操作的结果,或者创建满足特定条件的这些元素的子序列。

让我们进一步分解一下。列表理解只是编写代码的一种不同方式,它更短且更容易创建新列表。列表推导的结果是一个列表,这就是我们将其分配给列表的原因。
让我们回顾一下定义的第二部分,其中讨论了常见的示例。这应该使用具体示例来完成。
1.

fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"]
uppercase_fast_foods = [food.upper() for food in fast_foods]

此后,uppercase_fast_foods 将是:

['BURGER', 'PIZZA', 'TACOS', 'FRIED CHICKEN', 'HOT DOG']

我们使用 upper() 函数将列表中的每个食物项目更改为大写。因此,所有项目现在均为大写。这就是我们“创建新列表的方式,其中每个元素都是应用于另一个序列或可迭代的每个成员的某些操作的结果。”
2.

fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"]
foods_with_space = [food for food in fast_foods if " " in food]

此后,foods_with_space 将是:

['Fried Chicken', 'Hot Dog']

上面的代码行从列表中检索包含空白字符的项目。这就是我们“创建新列表的方式,其中每个元素都是应用于另一个序列或可迭代的每个成员的某些操作的结果。”

列表理解的例子

我在许多问题中使用了列表推导式,因为每当我遇到太多 for 循环时,我就会想,“没问题,我会简化它们。”事实证明,这是相同的逻辑,只是更干净! ?
言归正传,以下是我提出的一些最相关的示例:
1.修改列表的每个元素

foods = ["Burger", "Fries", "Fried Chicken", "Hot Dog", "Pizza"]
foods_with_version = [food   ' - 2024' for food in foods]
print(foods_with_version)

输出:

['Burger - 2024', 'Fries - 2024', 'Fried Chicken - 2024', 'Hot Dog - 2024', 'Pizza - 2024']

在此示例中,我们获取一份食品列表,并为每一项添加“- 2024”。我们使用列表理解来快速创建包含这些更新名称的新列表。
2.根据条件从列表创建子列表

foods = ["Burger", "Fried Chicken", "Hot Dog", "Fries", "Pizza"]
long_foods = [food for food in foods if len(food) > 7]
print(long_foods)

输出:

['Fried Chicken']`

在此示例中,我们创建一个食品列表并过滤掉超过 7 个字符的食品。我们使用带有条件的列表理解来实现此目的。
3.使用带有列表理解的范围函数来创建列表

x = [i for i in range(10, 20, 2)]
print(x)

输出:

[10, 12, 14, 16, 18]

在此示例中,我们使用 range() 的列表理解创建一个范围从 10 到 18 的数字列表。
4.将列表理解应用于字符串

input_string = "hello world"
marked_vowels = ['*' if char in 'aeiouAEIOU' else char for char in input_string]
print(marked_vowels)

输出:

['h', '*', 'l', 'l', '*', ' ', 'w', 'o', 'r', 'l', 'd']

在最后一个示例中,我们采用一个字符串并用星号 (*) 标记其元音。我们使用列表理解根据原始字符串创建一个新列表。

结论

在本文中,我涵盖了有关列表推导式的所有基本见解,从定义到进一步解释它们的各种示例。我希望一切都清楚了,并且从现在开始您会更有动力将列表推导式合并到您的 Python 代码中!

版本声明 本文转载于:https://dev.to/mariem_sghaier/an-elegant-and-simple-way-to-use-python-lists-list-comprehensions-584j?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 深入了解 Python 中的新模块 - dbm.sqlite3
    深入了解 Python 中的新模块 - dbm.sqlite3
    Python 中的 dbm 模块提供了一个简单高效的接口来创建和操作持久键值存储。它允许使用唯一键存储和检索数据,并且通常用于缓存、会话管理和其他类似任务。 随着Python 3.13.0的引入,dbm家族中添加了一个新模块——dbm.sqlite3。该模块利用强大的 SQLite 数据库引擎为 d...
    编程 发布于2024-11-08
  • 驯服野兽:我如何重构凌乱的 React 组件
    驯服野兽:我如何重构凌乱的 React 组件
    我们都去过那里。你打开几个月前编写的 React 组件,感觉就像你正在看一个匆忙的人编写的代码 - 因为你可能很匆忙。截止日期迫在眉睫,功能需要交付。快进到今天,是时候重构那个混乱的组件了。 所以,这就是我解决这个问题的方法。 最初的恐怖 我注意到的第一件事是该组件变得太大了。它尝试...
    编程 发布于2024-11-08
  • 什么时候应该使用多个 if 语句而不是 elif 语句?
    什么时候应该使用多个 if 语句而不是 elif 语句?
    多个 if 语句与 elif 语句在 Python 中使用条件语句时,经常会遇到多个 if 和 elif 语句。两种方法都有不同的目的和含义。多个 if 语句多个 if 语句按顺序检查每个条件。如果任意条件为 True,则执行相应的代码块,并且程序继续执行下一条语句。if text == 'some...
    编程 发布于2024-11-08
  • uick Wins 加速您的网站并增强性能
    uick Wins 加速您的网站并增强性能
    页面加载时间的定义 页面加载时间是指网页完全显示其内容所需的持续时间,从用户单击链接或输入 URL 的那一刻起,直到所有内容完全加载。它包括所有文本、图像、视频和其他元素在页面上变得可见和可用所需的时间。较短的加载时间意味着为用户提供更流畅、更无缝的体验,而较长的加载时间可能会导致...
    编程 发布于2024-11-08
  • Web Worker 与 Service Worker
    Web Worker 与 Service Worker
    介绍 当我第一次听到这些术语时,我想,好吧,他们正在用单独的线程做同样的事情。那么为什么我们需要这两个术语? 但说实话,这两个术语及其行为方式之间存在巨大差异。 会尝试详细解释。 这两个之间的共同点是 它们在单独的线程中运行,不会阻塞 Javascript 的主单线程。 Web W...
    编程 发布于2024-11-08
  • OpenCV 图像压缩完整指南
    OpenCV 图像压缩完整指南
    图像压缩是计算机视觉中的一项关键技术,它使我们能够更有效地存储和传输图像,同时保持视觉质量。理想情况下,我们希望拥有最佳质量的小文件。然而,我们必须做出权衡并决定哪个更重要。 本教程将教授使用 OpenCV 进行图像压缩,涵盖理论和实际应用。最后,您将了解如何为计算机视觉项目(或您可能拥有的任何其...
    编程 发布于2024-11-08
  • 何时应在 Python 中使用多个 if 与 If-elif 语句以获得最佳性能?
    何时应在 Python 中使用多个 if 与 If-elif 语句以获得最佳性能?
    Python 中的多个 If 与 Elif 语句在 Python 中,在评估条件语句时,可以使用多个 if 语句或单个 if -elif 声明。虽然两种方法可以实现相同的结果,但存在一些可能影响代码效率的关键差异。在您提出的场景中:if text == 'sometext': print(t...
    编程 发布于2024-11-08
  • 为什么应该始终向环境变量添加类型安全?
    为什么应该始终向环境变量添加类型安全?
    一点背景 如果您已经编码了一段时间,您就会知道环境变量的重要性及其所扮演的角色,以及找出由于项目中未设置该死的环境变量而导致的错误的痛苦, 哈哈! 今年早些时候,我在一家基于产品的初创公司担任全栈开发人员实习生。随着项目的增长,环境变量的数量也随之增加。而且,每个人都在不同的分支上...
    编程 发布于2024-11-08
  • Java 编程语言的历史
    Java 编程语言的历史
    Java 是世界上最流行的编程语言之一,以其多功能性、可靠性和效率而闻名。它多年来的发展和成长塑造了我们今天使用的大部分技术。回顾一下 Java 的历史。 1。 Java 的起源 Java 由 James Gosling 与 Mike Sheridan 和 Patrick Naughton 一起开发...
    编程 发布于2024-11-08
  • React 库简介:)
    React 库简介:)
    It is a popular open-source JavaScript library used for building user interfaces, particularly single-page applications (SPA). Isomorphic Tech...
    编程 发布于2024-11-08
  • 如何使用链接打开本地文件夹?
    如何使用链接打开本地文件夹?
    通过链接打开本地文件夹通过链接打开本地文件夹进行了多次尝试,例如: 打开文件夹</a>
    编程 发布于2024-11-08
  • 如何在 JavaScript 和 jQuery 中无缝访问 PHP 变量?
    如何在 JavaScript 和 jQuery 中无缝访问 PHP 变量?
    在 JavaScript 或 jQuery 中访问 PHP 变量:避免 Echo 过载许多开发人员遇到在 JavaScript 和 jQuery 中访问 PHP 变量的挑战。传统方法涉及回显 PHP 标签内的变量,例如:<?php echo $variable1; ?> <?php...
    编程 发布于2024-11-08
  • 为什么我的 `` 元素不继承其父元素的字体样式?
    为什么我的 `` 元素不继承其父元素的字体样式?
    字体继承不兼容在CSS中,元素继承其父元素的字体属性,例如元素。但是, 元素并不总是遵循此规则。在提供的示例中, 和 元素共享 Verdana 字体,但 元素显示为“MS壳牌Dlg”。这是因为表单元素(包括 )具有默认字体设置,该设置会覆盖继承的字体属性。覆盖默认字体确保所有字体继承一致元素时,...
    编程 发布于2024-11-08
  • 集成与端到端(E 测试:了解它们的差异以及何时使用它们
    集成与端到端(E 测试:了解它们的差异以及何时使用它们
    在软件开发中,测试在确保应用程序到达最终用户之前的可靠性和性能方面发挥着至关重要的作用。由于可用的测试方法多种多样,因此了解哪种方法适合您的需求非常重要。两种广泛使用的测试方法是集成测试和端到端(E2E)测试。两者都旨在验证系统是否正常工作,但他们从不同的角度进行验证。在这篇文章中,我们将探讨集成...
    编程 发布于2024-11-08
  • 初级后端开发人员寻求无偿工作以获得经验
    初级后端开发人员寻求无偿工作以获得经验
    大家好, 我叫 Harith,是一名初级后端开发人员。我对使用 Python 和 Django 框架进行 Web 开发非常感兴趣。我希望通过为开源项目做出贡献来获得更多实践经验。 我提供什么: 愿意在没有任何报酬的情况下参与项目,因为我的主要目标是提高我的技能和拓宽我的知识。 了解 Django 和...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3