加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 云计算 > 正文

Python 的列表解析式是解决任务最有效的技巧吗?

发布时间:2022-07-16 12:09:02 所属栏目:云计算 来源:互联网
导读:Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,我将向您展示列表解析式(List Comprehension)。我们将讨论如何使用它?什么时候该或不该使用它?小伙伴们,把全文都读下来把! 列表解析式的优势 比循环更节
  Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,我将向您展示列表解析式(List Comprehension)。我们将讨论如何使用它?什么时候该或不该使用它?小伙伴们,把全文都读下来把!
 
  列表解析式的优势
  比循环更节省时间和空间。
  需要更少的代码行。
  可将迭代语句转换为公式。
  如何在 Python 中创建列表
  列表解析式是一种基于现有列表创建列表的语法结构。让我们来看看创建列表的不同实现
 
  循环
  循环是创建列表的传统方式。不管你使用什么样的循环。要以这种方式创建列表,您应该:
 
  实例化一个空列表。
  循环遍历一个可迭代的(如 range)的元素。
  将每个元素附加到列表的末尾。
  
 
  输出:
 
  
 
  在此示例中,您实例化了一个空列表 numbers。然后使用 for 循环迭代 range(10) 并使用 append() 方法将每个数字附加到列表的末尾。
 
  map() 对象
  map() 是创建列表的另一种方法。您需要向 map() 传递一个函数和一个可迭代对象,之后它会创建一个对象。该对象包含使用指定函数执行每个迭代元素所获得的输出。
 
  例如,我们将呈现在某些产品的价格中增加增值税的任务。
 
  
 
  您已经构建了 add_vat() 函数并创建了 prices 可迭代对象。您将这两个参数都传递给 map() 并收集生成的 map 对象 grand_prices,或者您可以使用 list() 轻松地将其转换为列表。
 
  输出:
 
  
 
  列表解析式
  现在,让我们看一下列表解析式方法!这确实是 Python 风格,并且是创建列表的更好方法。为了弄清楚这种方法有多强大,我们用一个单行代码来重写那个循环示例。
 
  
 
  输出
 
  
 
  正如您所见,这是一种不可思议的方法!列表解析式看起来足够可读,您不需要编写更多代码,而只需一行。
 
  为了更好地理解列表,请查看以下语法格式:
 
  
 
  哪种方法更有效
  好的,我们已经学习了如何使用循环、map() 和列表解析式来创建列表,在您的脑海中可能会提出“哪种方法更有效”的问题。我们来分析一下吧!
 
  
 
  输出:
 
  
 
  正如我们现在所看到的,创建列表的最优的方法是 map(),排在第二位的是列表解析式,最后是循环。
 
  但是,方法的选择应取决于您想要实现的目标。
 
  使用 map() 可以使你的代码更高效。
  使用循环可以使代码的思路展现更加清晰。
  使用列表解析式可以您使代码更加紧凑,且较高效。这是创建列表的最佳方式,因为这种方式可读性最强。
  高级解析式
  条件逻辑
  早些时候,我向您展示了这个公式:
 
  
 
  公式可能有些不完整。对解析式的更加完整描述增加了对可选条件的支持。将条件逻辑添加到列表解析式的最常见方法是在表达式的末尾添加条件:
 
  
 
  在这里,您的条件语句正好位于右边的括号中。
 
  条件很重要,因为它们允许列表解析式过滤掉不需要的值,这在一般情况下也可以调用 filter():
 
  
 
  输出:
 
  
 
  正如您所看到的那样,这个解析式收集了可被 2 整除且没有余数的数字。
 
  如果您需要更复杂的过滤器,那么您甚至可以将条件逻辑移动到单独的函数中。
 
  
 
  输出:
 
  
 
  您构建 is_prime(number) 以确定是否是素数并返回布尔值。接下来,您应该将函数添加到解析式的条件中。
 
  该公式允许您使用条件逻辑从几个可能的输出选项中进行选择。例如,您有一个产品价格表,若有负数,您应将其转换为正数:
 
  
 
  输出:
 
  
 
  在这里,您的表达式 price 有一个条件语句,如果 price > 0 else price*-1。这会告诉 Python,如果价格为正,则输出价格值;但如果价格为负,则将价格转换为正值。该功能很强大,考虑将条件逻辑视为其自身的函数的确是很有用的:
 
  
 
  输出:
 
  
 
  集合解析式
  您还可以创建一个集合解析式!它基本与列表解析式相同。不同之处在于集合解析式不包含重复项。您可以通过使用花括号取代方括号来创建集合解析式:
 
  
 
  输出:
 
  
 
  你的集合解析式只包含唯一的字母。这与列表不同,集合不保证项目将以特定顺序存储数据。这就是为什么集合输出的第二个字母是 e,即使字符串中的第二个字母是 x。

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读