如何在python中使用列表理解

列表理解是一个有用的Python工具,用于基于现有数据创建列表。下面是如何使用它。...

在Python中及时使用列表理解可以使迭代列表操作变得容易。除了一行之外,它的可读性更高,执行效率也更高。

Text editor with Python code written on it

然而,如果你不知道如何使用它,你可能会生气。如果您不知道在代码中的什么地方应用它,那就更令人沮丧了。在这里,我们将通过一些实际例子向您展示如何在Python中使用列表理解。

什么是列出python中的理解以及它是如何工作的(list comprehension in python and how does it work)?

用Python创建项目列表很容易。但是,当您需要从数学或字符串操作生成值或项的列表时,该任务可能会变得有点乏味。这时使用列表理解就派上用场了。

使用列表理解的一个优点是,您可以在一个列表中执行多个操作。

相反,它创建新项并将它们附加到它自动声明的空列表中。因此,Python的list comprehension不需要手动创建一个空列表并用for循环附加到它,而是让您自动完成这项工作,而不用担心新列表是如何产生的。

术语“列表理解”来自这样一个事实:所有操作都在一个Python列表中,该列表被分配给一个命名变量。如前所述,它允许您在一行代码中执行特定操作。然后将输出附加到一个新列表。

最后,您还可以将列表理解的输出用于其他目的。这是因为它将表达式堆叠在不同的变量中。所以你以后可以参考。

例如,你可能正在用BeautifulSoup刮一个网站。假设您打算从网站上获取所有商品的名称及其价格。

然后,您决定将刮取的数据放入CSV或Excel文件中。理想的做法是将所有商品的名称及其价格刮去,并将它们放在单独的列中。但是,在这种情况下,使用列表理解可以确保您在专用变量中获得了刮取的数据。然后,您可以稍后将这些变量转换为Python数据帧。

请看下面的示例:

Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]

一旦获得循环变量,然后可以使用Python的熊猫将它们放在数据框架中的单独列中。

如何在python中创建和使用列表理解

for循环是列表理解中必不可少的迭代器。通常,Python中的列表理解采用以下格式:

ComprehensionVariable = [expression for items in list]

Printing ComprehensionVariable将上述代码的结果作为列表输出。

但是,请注意不要将列表理解与开放for循环混淆。

例如,让我们使用一个open For循环来获取1到30之间的所有3的倍数的列表:

myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

为了比较两者,让我们使用列表理解做同样的事情:

multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

您也可以使用条件语句的列表理解。下面的示例代码打印1到10之间的所有奇数:

oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]

现在,让我们用一个开for循环重写上面的代码:

myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]

相关:如何在Python中附加列表

列表理解还接受嵌套if语句:

oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]

它还接受嵌套for循环:

someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)

也可以在列表中有一个普通的嵌套for循环:

someNums = [i*2 for i in range(1, 3) for k in range(4)]

您还可以使用Python列表理解操作字符串。让我们看一看下面的单词反理解:

word = ["This is a python list comprehension tutorial"]
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7

列表理解也可以接受执行特定操作的函数。让我们**一个乘法器函数,在列表中获得偶数,以了解其工作原理:

Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]

您仍然可以在一个函数中编写上面的代码,而不需要使用理解。但是当您需要执行几个迭代并将它们放入单独的变量中时,列表理解非常有用。

例如,可以对n执行另一个操作,并为其指定一个专用变量。让我们修改上面的理解,从奇数中生成偶数:

multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]

词典和集合理解

除了列表理解之外,Python还提供了字典和集合理解功能。

请看下面的词典理解示例,了解其工作原理:

corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

上面的代码遍历1到9之间的数字列表,并使它们成为键。然后它告诉Python将每个键乘以2。最后,它将该操作的结果显示为结果数组中每个键的对应值。

相关:数组和列表在Python中的工作方式

集合理解有点类似于列表理解。下面是一个集合理解的例子:

numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}

但是,与列表理解不同,set congress删除重复项:

nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

您可以使用列表理解来尝试上面的代码,看看它们有什么不同。

你每次都能用列表理解吗?

我们已经看了列表理解的不同例子,以及在哪里可以使用它们。然而,与任何其他Python方法一样,列表理解的用例取决于您希望解决的特定问题。因此,你应该只使用它,如果它是理想的具体问题,你希望解决。

列表理解的目的之一是简化代码并使其更具可读性。所以,在处理它的时候一定要避免复杂性。例如,对Python的理解可能会变得复杂。这违背了它的目的。

  • 发表于 2021-03-11 10:55
  • 阅读 ( 576 )
  • 分类:编程

你可能感兴趣的文章

追加(append)和在python中扩展(extend in python)的区别

关键区别–python中的append与extend Python是一种流行的通用编程语言。它是一种高级语言,所以语法很容易被程序员理解和阅读。Python中最基本的数据结构是序列。它是一组元素。起始元素的索引为0,下一个元素的索引为1,依...

  • 发布于 2020-10-19 10:35
  • 阅读 ( 226 )

perl公司(perl)和python(python)的区别

关键区别–perl与python 计算机程序为计算机执行任务提供指令。一组指令被称为计算机程序。计算机程序是用编程语言开发的。高级语言程序员可以理解,但计算机却不能理解。因此,这些程序被转换成机器可理解的格式。Per...

  • 发布于 2020-10-19 17:38
  • 阅读 ( 215 )

红宝石(ruby)和python(python)的区别

关键区别——ruby与python Ruby和Python是高级编程语言,因为它们遵循与英语语言相似的语法。因此,程序员很容易理解这些语言。Ruby和Python都是解释语言。两种语言都有大量的社区支持。Ruby和Python的一个主要优点是这些语言支...

  • 发布于 2020-10-19 17:41
  • 阅读 ( 337 )

json-python解析:简单指南

... 下面是如何表示对象数组。在这种表示法中,数组的每一项都是一个对象。以下是棒球运动员的工资样本。 ...

  • 发布于 2021-03-13 11:20
  • 阅读 ( 281 )

python字典:如何使用它编写更好的代码

... 在本文中,我们将向您介绍如何使用python字典。 ...

  • 发布于 2021-03-14 05:15
  • 阅读 ( 260 )

数组和列表在python中的工作方式

...数据类型告诉编译器(或者在Python的情况下告诉解释器)如何使用数据。数据结构指定可以执行的操作,并且通常实现特定的规则和规定。 ...

  • 发布于 2021-03-15 17:19
  • 阅读 ( 229 )

了解如何使用python虚拟环境

...您是一名经验丰富的Python开发人员,还是刚刚起步,学习如何设置虚拟环境对于任何Python项目都是必不可少的。和我一起讨论Python虚拟环境的所有知识。 ...

  • 发布于 2021-03-16 10:00
  • 阅读 ( 233 )

帮助您快速学习的10个基本python示例

... 如何声明空dict: ...

  • 发布于 2021-03-16 13:29
  • 阅读 ( 198 )

学习python编程的5个最佳网站

... 1如何像计算机科学家一样思考 ...

  • 发布于 2021-03-22 19:13
  • 阅读 ( 204 )

6个有用的机器学习教程和课程,掌握要点

...尼尔·希夫曼本人。作为一名天生的教师,他给出了代码如何与机器学习算法交互的清晰示例。 ...

  • 发布于 2021-03-24 09:25
  • 阅读 ( 283 )