个性化阅读
专注于IT技术分析

18个最常见的Python列表问题

本文概述

该帖子将提供简单的解决方案, 简单易懂的说明以及一些提示和技巧, 你可以在一些交互式练习的帮助下在现场进行练习!

以下是我们将在本教程中回答的python列表问题:

  1. 何时使用列表以及何时使用元组, 字典或集合
  2. 如何从列表中选择元素
  3. 如何将列表转换为其他数据结构
  4. 如何确定列表的大小
  5. Python append()和extend()方法有什么区别?
  6. 如何连接列表
  7. 如何对列表排序
  8. 如何克隆或复制列表
  9. 列表推导如何在Python中工作?
  10. 如何计算Python中列表项的出现次数
  11. 如何将列表拆分为均匀大小的块
  12. 如何循环列表
  13. 如何从列表中创建平面列表
  14. 如何获得两个列表的交集
  15. 如何从列表中删除重复项
  16. 为什么用NumPy代替列表?
  17. 如何创建空的NumPy数组
  18. 如何用列表做数学

如果你想以课程格式了解列表, 则应查看我们的《 Python for Data Science入门》课程, 其中有一章介绍了pythons列表。

背景

对于那些开始学习Python的人以及已经使用过该语言的人来说, 列表是一个越来越受欢迎的话题。如果我们相信Google趋势中的搜索结果, 那么对该主题的搜索兴趣逐年上升。

如果你是论坛的固定访问者, 以回答或询问有关Python编程的问题, 例如Stack Overflow, Quora或Reddit, 则可能知道其背后的原因。

许多Python问题找到了进入这些论坛的方式并继续存在, 在那里, 用户将其中一些标记为”重复”或”粘性”, 对其进行投票或与他人讨论正确的解决方案。

通过此博客文章, srcmini希望帮助你解决一个主题, 即关于Python列表的最常见问题, 并且以交互方式解决!

到底什么是Python列表?

列表是Python中的四个内置数据结构之一, 还有元组, 字典和集合。它们用于存储有序的项目集合, 这些项目可能是不同的类型, 但通常不是。逗号分隔列表中包含并括在方括号中的元素。就像这个例子:

你会看到第二个变量GreaterZoo是一个与zoo变量相似的列表。但是, 你还会看到更大的动物园包含另一个列表, 其中包含不同类型的猴子。

由于Python中的列表存储项或对象的有序集合, 因此我们可以说它们是序列类型, 正是因为它们的行为类似于序列。也被认为是序列类型的其他类型是字符串和元组。

你可能想知道序列类型有什么特别之处。好吧, 简单来说, 它意味着程序可以遍历它们!这就是为什么列表, 字符串, 元组和集合称为”可迭代对象”的原因。

请记住, 此概念特别重要, 可能是你看到该概念以数据科学中使用的其他编程语言(例如Scala)返回了!

现在我们开始真正的工作!让我们更深入地探讨关于列表的哪些问题, 这些列表可能会或可能困扰你作为Python程序员。这是我们将在本教程中回答的所有问题的列表:

1.何时使用Python列表以及何时使用元组, 字典或集合

刚阅读时, 简介似乎很简单, 但是当你实际在处理小型python脚本或整个项目时, 对列表或其他一些序列类型的选择可能对你而言并不明确。

但是, 为你的数据选择正确的数据结构至关重要!

继续阅读以了解更多信息。

列出与元组

元组用于收集元素的不可变有序列表。这意味着:

  • 你无法将元素添加到元组。元组没有append()或extend()方法,
  • 你无法从元组中删除元素。元组没有remove()或pop()方法,
  • 你可以在元组中找到元素, 因为这不会更改元组。
  • 你还可以使用in运算符检查元组中是否存在元素。

因此, 如果你要定义一组恒定的值, 并且要对其进行所有操作, 则要对其进行迭代, 请使用元组而不是列表。因为元组包含”写保护”数据, 所以它将比使用列表更快并且更安全。

列出字典

  • 列表存储项目的有序集合, 因此保持一定顺序。字典没有任何顺序。
  • 已知字典将每个键与一个值相关联, 而列表仅包含值。

当你有一组无序的唯一键映射到值时, 请使用字典。

请注意, 由于你具有相互链接的键和值, 因此在检查元素成员资格的情况下, 性能将优于列表。

列出对集

  • 就像字典一样, 集合在项目集合中没有顺序。不喜欢列表。
  • Set要求其中包含的项是可哈希的, 列表存储不可哈希的项。
  • 集合要求你的商品必须唯一且不可变。集合中不允许重复, 而列表则允许重复并且是可变的。

当你具有无序的唯一且不可变且可哈希的值的集合时, 应使用集合。

你不确定哪些值可哈希化?

请看以下内容以确保:

可散列 不可散列
浮点数 辞典
整数 套装
元组 列表
弦乐  
frozenset()  

提示:不要相信我们的话!在下面自己尝试一下, 并在IPython shell中进行实验:)

请注意, 在处理可散列项目时, 使用集合检查成员资格(测试某个元素是否属于序列的一部分)将比使用列表更快。

2.如何从列表中选择元素

如果要让谁正确使用这些列表, 则需要知道如何访问它们。

通常, 你可以访问列表以更改某些值, 更新或删除它们, 或对它们执行某种其他类型的操作。访问列表以及所有其他序列类型的列表的方法是使用索引运算符[]。在内部, 你放置了一个整数值。

让我给你看一个例子:

运行代码, 看看你从这段代码中学到了什么。你会注意到, 返回了bigZoo变量的第一个元素。起初可能有点令人困惑或令人惊讶, 但是索引从0开始而不是从1开始。

如何获取列表中列表的最后一个元素

这个问题的答案是上一节中的解释的补充。

尝试将负值(例如-1或-2)放入索引运算符, 以检索我们bigZoo列表的最后一个元素!

不太难, 是吗?

索引超出范围错误是什么意思?

这个错误是你经常会看到的错误, 特别是在你不熟悉编程或Python时。

理解此错误意味着什么的最好方法是亲自尝试一下。

使用上面的交互式学习小部件, 尝试传递过多的负数或正数!

如你所见, 如果将大于或小于列表的整数值传递给索引运算符, 则可能会出现”索引超出范围”错误!这意味着你正在分配一个值或引用一个尚不存在的索引。

这段代码示例将触发”索引超出范围”错误。让它运行并亲自查看!

列表中的切片符号

当你不熟悉编程或Python时, 这可能是一个特别令人困惑的话题。

通常, 当你想一次选择多个列表元素时, 可以使用切片符号。就像从列表中仅选择一个元素时, 使用双括号。现在的特别之处在于, 你不仅可以使用整数, 还可以在双括号之间放置一个:, 如下所示:

你会看到, 现在我们获得了bigZoo列表, 但仅从索引2开始的熊猫条目开始。换句话说, 因为没有指定其他整数, 所以我们从索引2开始到列表的末尾。

你认为现在做相反的事情会发生什么?

通过运行上面的代码块找出你是否正确!

你会看到, 现在我们只恢复了熊和狮子。现在, 我们从索引0开始, 转到索引2。与你可能期望的相反, 结果不包括熊猫条目。

通常, 以下内容成立:


# items start through the end (but the end is not included!)
a[start:end]

# items start through the rest of the array
a[start:]    

# items from the beginning through the end (but the end is not included!)
a[:end]

提示:只需通过冒号:, 就可以复制列表!

除了简单的切片符号外, 还有步长值, 可以将其概括如下:


# start through not past end, by step
a[start:end:step]

那么, 该阶跃值到底能做什么?

好吧, 它允许你从字面上逐步浏览列表, 并仅选择步进值包括的那些元素。一个例子:

请注意, 如果你未指定任何步长值, 则将其设置为1。在浏览列表时, 不会跳过任何元素。

请记住, 你的结果不包括你在切片符号中指定的最终值索引!

如何随机选择列表中的元素

你可以使用随机包从列表中选择一个随机元素:

如果你还希望通过列表的索引选择一个随机列表元素, 则可以使用随机库中的randrange方法:

提示:你应该考虑签出随机库, 因为使用Python编程时它将很方便!

3.如何将Python列表转换成其他数据结构

有时, 列表并不完全符合你的需求。在这些情况下, 你可能想知道如何将列表转换为更合适的数据结构。下面, 我们列出了一些最常见的转换问题及其答案。

如何将列表转换为字符串

你可以使用”.join()将列表转换为字符串。此操作使你可以将列表中的所有字符串粘合在一起, 然后将它们作为字符串返回。在这里阅读更多。

请注意, 如果列表仅包含整数, 则应在对它们执行连接之前将元素转换为字符串。在上面的交互式代码块的第二个示例中对此进行了说明。

从整数到字符串的转换是通过遍历原始listOfNumbers列表来完成的。如果你想了解有关如何遍历列表的更多信息, 请转到问题12及其答案。

如何将列表转换为元组

你可以使用tuple()函数在Python中将列表更改为元组。将你的列表传递给此函数, 你将获得一个元组!

记住:元组是不可变的。之后, 你将无法更改它们!

提示:你可以在下一部分的交互式练习中尝试将listOfStrings转换为元组。

如何在Python中将列表转换为集合

你会记得, 集合是唯一项的无序集合。这意味着, 一旦将其转换为集合, 不仅意味着你在原始列表中可能拥有的所有重复项都会丢失, 而且列表元素的顺序也会丢失。

你可以使用set()函数将列表更改为集合。只需将你的列表传递给它即可!

现在练习在此处将列表listOfStrings转换为元组和集合:

如何将列表转换为词典

字典可用于键和值, 因此从列表到字典的转换可能不太直接。假设你有一个这样的列表:


helloWorld = ['hello', 'world', '1', '2']

你需要确保将” hello”和” world”以及” 1″和” 2″解释为键值对。这样做的方法是使用切片符号选择它们, 并将它们传递给zip()。

zip()实际上像预期的那样工作:它将元素压缩在一起。在这种情况下, 当你压缩helloWorld元素helloWorld [0 :: 2]和helloWorld [1 :: 2]时, 输出将是:

请注意, 你需要使用list()来打印zip()函数的结果。

你将把它传递给dict()函数, 该函数将hello解释为键, 将world解释为值。同样, 将1解释为键, 将2解释为值。

运行以下代码以确认这一点:

请注意, 传递给zip()函数的第二个元素将使用step值来确保仅选择world和2个元素。同样, 第一个元素使用step值选择hello和1。

如果你的列表很大, 则可能需要执行以下操作:

请注意, 可迭代对象可以为你提供迭代器。迭代器具有.__ next__方法, 可保存有关迭代中确切位置的信息:它知道迭代中的下一个元素是什么。

4.如何确定Python中列表的大小

你可以将列表传递给len()函数以获取列表的长度。

在下面测试一下!我们已经列出了可以使用的justAList列表。

请注意, len()函数并非专门用于检索列表的长度, 而是还可以与其他序列或集合(例如字典, 集合, 字符串等)一起使用。你可以在此处找到更多常规的内置函数。

5. Python append()和extend()方法有什么区别?

让我们通过重新讨论在本文第一部分中解释的可迭代的概念来解决这个问题:

请记住, 我们说当你的程序可以迭代某个值时, 该值是可以迭代的。换句话说, 可迭代的值表示一个或多个值的序列。正如你可能在第一部分中所读到的那样, 列表是序列, Python序列类型的所有实例都是可迭代的。

提示:你可以检查变量具有.__ iter__方法时是否可迭代, 如以下代码所示:

运行上面的代码, 并在IPython Shell中尝试其他一些简单示例!

既然迭代的概念在我们的脑海中显而易见, 那么我们就可以开始理解这两种方法之间的区别。一方面, extend()接受一个可迭代的对象(正确的是, 它接受一个列表, 集合, 元组或字符串!), 然后一次将可迭代的每个元素添加到列表中。

另一方面, append()将其参数作为单个项添加到列表的末尾, 这意味着, 当append()函数将iterable作为其参数时, 它将把它视为单个对象。

学习下面的代码块, 并亲自研究代码, 以了解这两种方法之间的区别:

你可以看到, extend()是多次调用append()的更有效的版本。

6.如何在Python中连接列表

要连接列表, 请使用+运算符。它将为你提供一个新列表, 该列表是两个列表的串联, 而无需修改原始列表。

请注意, 串联和附加可能会造成混淆。 append()与+运算符不同, 后者又与extend()方法非常相似, 但并不完全相同……你可以看到, 使用append()和extend()可以修改原始列表, 而使用+运算符, 你可以使另一个列表变量。

自己进行测试, 并与上一个代码块中的示例进行比较:

7.如何在Python中对列表进行排序

有两种非常简单的方法来获取列表中的值以升序或降序排序:

  • 你使用sort()方法
  • 或者你使用sorted()函数并将一个列表传递给它

sorted()函数可以应用于任何Iterable对象, 这意味着当它们传递给它时, 它也接受字符串, 集合, 字典!

提示:亲自尝试一下!我们已经制作了两个列表, 房间和订单, 你可以使用上述两种技术自己进行排序:)

请注意对原始列表进行排序后如何对其进行更改。建议你在不再使用原始列表的情况下使用此功能。

8.如何在Python中克隆或复制列表

有很多克隆或复制列表的方法:

  • 你可以切片原始列表并将其存储到新变量中:newList = oldList [:]
  • 你可以使用内置的list()函数:newList = list(oldList)
  • 你可以使用副本库:
    • 使用copy()方法:newList = copy.copy(oldList)
    • 如果你的列表包含对象, 并且你也想复制这些对象, 则可以使用copy.deepcopy():copy.deepcopy(oldList)

在下面尝试一下!我们已经创建了一个杂货列表供你复制并与你的朋友分享。

请注意, 当你使用”简单”复制​​方法时, 原始列表将被修改。但是, 如果你使用deepcopy()方法, 将防止这种情况。运行下面的代码, 看看会发生什么:

对于已经将Python列表提升到新水平的那些人, 以下部分为你提供一些简单的答案, 以解决你的复杂问题。

但是, 对于那些想知道列表之外的东西, 库可能提供哪些优势而不是内置列表结构的人来说, 下一节肯定会派上用场。

继续阅读以了解更多信息!

9.列表推导如何在Python中工作?

基本上, 列表理解是一种优雅地构建列表的方法。对于那些热爱数学的人来说, 最好的事情是他们看起来很像数学列表。自己判断:

现在, 这是什么意思?取0到10之间的所有数字, 其中不包括10, 然后将每个数字乘以2。运行上面的代码, 看结果是否符合你的期望。

不太难, 是吗?让我们加一个缺口!

假设你要制作与以前相同的列表, 但只想将可以除以2的数字相乘。即使借助列表推导, 这也很容易:

你只需在原始语句中添加条件(用if表示)即可。如果证明该条件为TRUE, 则将数字乘以2。在这种情况下, 我们的条件是该数字可以除以2(除法运算没有余数)。

现在, 从更一般的意义上讲, 你还可以使用列表理解功能将列表转换为其他列表, 这听起来有点困难, 不是吗?

考虑下一个示例:

在此示例中, 你已经具有要通过列表理解进行转换的列表myList:你再次看到, 对于myList中的x, 对于myList中的每个列表元素, 都将执行一些操作。

接下来, 你将看到包含(lambda x:x * x)。为了使事情变得简单, 你应该只知道lambda函数是在运行时构造的匿名函数。考虑到那段代码只是对你的指示, 你可以忽略它并专注于x * x。

你会看到此函数采用一个元素并将其自身相乘。这是一个匿名函数, 因此你需要将其传递给list元素, 以确保lambda函数将其作为输入。这就是为什么你看到(lambda x:x * x)(x)的原因。

换句话说, 你可以将上述代码的整个第二行重写为:


f = lambda x: x*x
[f(x) for x in range(10)]

首先定义lambda函数, 该函数表示你想将一个元素自身相乘, 然后在第二行中将list元素传递给它, 以确保每个list元素都被自身相乘。

请注意, 除了列表理解之外, 还存在集合和字典理解。

这已经是相当了, 但是关于列表理解还有更多的发现。

继续阅读以下常见问题, 以了解有关嵌套列表理解的更多信息, 并查看有关列表理解对使用Python编程意味着什么的更多实际示例!

10.如何计算Python中列表项的出现

由于列表不像集合那样具有项目唯一性标准, 因此你可能想更多地了解列表中不仅出现一个特定列表项目多少次, 而且遇到每个列表项目多少次。

在下面, 你将找到两个问题的答案!

计算列表中一项的出现

要仅计算一个列表项的出现次数, 可以使用count()方法:

计算列表中所有项目的出现次数也称为”统计”列表或创建统计计数器。

用count()计算列表中的所有项目

要计算列表中项目的出现次数, 还可以将列表理解与count()方法结合使用:

在这段代码中, 你首先看到列表已转换为集合。这将确保仅保留唯一列表项, 即a和b。然后, 你说对于每个设置的项目, 你都想拿走该项目并将其传递给count()方法

请记住, 集合仅包含唯一项!

在这种情况下, 首先将a传递到list.count(x), 并且将对原始列表中所有出现的a进行计数。

用Counter()计算所有列表项

另外, 集合库中有更快的Counter()方法:

请注意, 当你要计算所有列表项时, Counter()通常更快。

11.如何将Python列表拆分成均匀大小的块

要将列表分成相同大小的部分, 可以结合使用zip()函数和iter():

上面的代码如下工作:

  • iter()是序列上的迭代器。
  • [iter(x)] * 3产生具有三个listiterator对象的列表:每个列表迭代器都是x的迭代器。
  • 传递给zip()函数的*, 然后再将序列解压缩为参数, 以便你将相同的迭代器三遍传递给zip()函数, 并且每次都会从迭代器中提取一个项目。

等待。最后一步是完全不清楚的。

让我逐步指导你:

  1. 你将拥有三个列表迭代器对象, 可以将其视为:

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

  1. 第一次, zip()将按顺序获取列表的一个元素, 从而使你拥有:

[1][2][3]

请注意, 迭代器对象将为你跟踪迭代中的下一个元素!

  1. 第二次, 元素将被添加到你刚创建的三个列表中, 最终你将得到:

[1, 4], [2, 5], [3, 6]

  1. 上一次, 你遵循相同的过程, 最终得到:

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

  1. 将这三个列表压缩在一起将使你拥有:

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

但是, 如果你决定将此逻辑放入函数中, 则可以采用以下方法:

你的chunks()函数获取列表和块大小作为输入。然后它将打印:”从列表中获得连续的(你的块大小)大小的块”(即, 你为chunks()方法提供的列表)。

然后, 你会看到range(0, len(list), chunkSize):此列表从0开始, 并以表示列表长度的整数结束。步进值设置为等于你传递给chunks()的chunkSize值。

对于由range()构造的此列表中的每个元素, 你将产生原始列表的一部分, 从给定元素的索引开始, 以给定索引+块大小结束。

例如, 如果索引0通过for循环, 则将给出[0:2]的列表。在下一次迭代中, 索引2通过for循环传递(记住step值!), 然后将输出原始列表的一部分[2:4]。

请注意, 你使用pprint()或漂亮打印来打印结果。

你也可以简单地使用列表理解而不是编写函数:

12.如何在Python中循环列表

你可以使用for循环轻松遍历任何列表。对于不熟悉for循环的人来说, 它的工作原理如下:for循环使你可以对列表中的每个元素执行操作。

在Python中, for循环如下所示:

你有一个列表mylist, 并告诉Python你应该检查每个列表元素的长度是否等于3。由于我们的列表包含两个列表, 每个列表中都有三个元素, 即[1, 2, 3]和[8, 9, 10], 只有这些将被打印出来。

请注意, 如何将上述代码块中的x更改为element, listElement或你想要为其指定的任何名称。在控制台中尝试一下!

你会在此处看到结果未显示元素的索引。如果要通过使用索引遍历列表, 可以执行以下操作:

因为你不仅要打印列表元素, 而且要打印它们的索引, 所以你当然必须在for循环中显示它。这就是为什么我们使用enumerate(myList)来返回索引和值的原因。自然, 我们也必须在for语句的开头显示这一点:你看到i, val可以清楚地表明我们期望得到索引和值。

请注意, 你还可以使用列表理解来遍历列表。在这里, 结果已经被打印出来, 而无需传递print():

13.如何从列表中创建平面列表

要从列表列表中列出一个简单列表, 可以使用sum()函数。只是不要忘记将你的列表和一个空列表传递给它:

你还可以使用两种不同的方法来展平列表:

你可以使用reduce()方法, 将lambda函数传递给该方法。现在, 可以使用reduce()方法来确保将可迭代次数减少为单个值。如何减少它, 取决于传递给它的函数。在这种情况下, 你说要累加元素:发生的情况是将[1, 2]添加到[3, 4], 并将此结果添加到[5, 6]。直观地表示, 它给出:


([1, 2]+[3, 4])+[5, 6]

请记住, +运算符连接列表。

  • 从列表列表中制作平面列表的第二种方法是使用列表理解。这个嵌套的for循环语句对你来说并不容易。归结为, 你首先要获取列表或[1、2], [3、4], [5、6]中的子列表, 然后要考虑子列表中的项目, 然后从子列表中打印出每个项目。

查看此嵌套列表理解的另一种方法是将其重写为常规的for循环:


list1 = []

for sublist in list:
  for item in sublist:
    list1.append(item)

14.如何获取两个Python列表的交集

使用列表理解的列表交集

如果要获取两个列表的交集, 则可以使用filter()函数。

在下面的练习中对此进行了说明。我们已经为你定义了两个列表, 列表1和列表2。如果要检查列表的内容, 请使用IPython Shell。

在上面的代码中, filter()部分获取每个子列表的项目, 并检查它是否在源列表list1中。对list2中的每个子列表执行列表推导。

请注意, 由于filter()返回的是可迭代的列表, 而不是列表, 因此你需要使用list()包装放入filter()的所有内容。尝试删除list()自己进行测试!

为了提高可读性, 你还可以使用嵌套列表推导:

与set()相交的列表

如果元素的顺序并不重要, 并且你不必担心重复项, 则可以使用集合交集:

在第一个示例中, 将两个列表都转换为集合, 将它们相交, 然后再次将它们作为列表输出。输出列表中的顺序将是任意的。你也可以将两个列表中较大的一个转换为一个集合, 然后使用交集()获得该集合与任何可迭代对象的交集。

请注意, 对于这两种工作方式, 你的列表不应包含其他列表。这就是为什么list2看起来不同的原因。打印出来只是为了确保!

15.如何在Python中从列表中删除重复项

如本博文第一部分所述, 如果要存储唯一的无序项目集合, 最好选择一个集合。

要从任何迭代创建集合, 你只需将其传递给内置的set()函数。如果以后再次需要真实列表, 则可以类似地将集合传递给list()函数。

请记住, 一个可迭代对象可以是列表, 字典等……通过将.__ iter__方法应用于变量, 检查变量是否可迭代。

以下示例清楚地说明了使用set()从列表中删除所有重复项:

从最后的结果可以看出, 在减去smallNumbers的设置元素后, 列表的原始顺序将不会保留。就像你现在已经知道的那样, 集合本身是无序集合, 因此你在列表中拥有的任何顺序都会丢失。当你将集合转换回列表时, 会为你创建一个任意订单。

如果元素的顺序对你很重要, 那么你将不得不使用其他机制。此页面更详细地介绍了该主题。

16.为什么用NumPy代替Python列表?

通常, 似乎有四个原因使Python程序员更喜欢NumPy数组而不是Python中的列表:

  • 因为NumPy数组比列表更紧凑。
  • 因为使用NumPy可以更快地读取和写入项目。
  • 因为NumPy可以更方便地使用, 这要感谢你免费获得了许多矢量和矩阵运算的事实
  • 因为NumPy的实施效率更高, 所以可以更高效地使用它们。

17.如何创建空的NumPy数组

如果只想创建一个空的NumPy数组, 则可以执行以下操作:

但是, 如果你的目标是初始化NumPy数组, 则也可以采用以下方法之一:

如果你正在寻找其他方法来初始化NumPy数组, 请务必查看本文档。

18.如何在Python中使用列表进行数学运算

很多时候, 我们不仅使用列表来存储值的集合, 而且还使用它对它执行一些数学运算。本节将介绍有关使用列表进行数学运算的一些最常见问题。

如何计算列表的加权平均值

加权平均值很像平均值, 但略有不同:加权平均值返回一个取决于值和权重变量的数字。

起初, 这个定义似乎有点繁琐。让我们看一个例子:


cost = [0.424, 0.4221, 0.4185, 0.4132, 0.413]
cases = [10, 20, 30, 40, 50]

你可以使用以下代码轻松计算加权平均值:

但是, 你也可以选择其他两种方法之一。首先, 你可以使用:

或者, 你可以使用以下方法:

最后, 你还可以借助zip()函数来计算列表的加权平均值。

提示:创建一个变量costAndCases, 你只需为其分配zip()函数, 并为其分配cost和case变量。你将看到如何仅使用元组创建另一个列表。每个元组的第一个值表示成本, 而第二个元素表示可按该价格购买的案例。

还记得对你的列表使用的zip()吗?很容易, 它实际上将你的列表压缩在一起。例如, zip(cost, cases)将输出[(0.424, 10), (0.4221, 20), (0.4185, 30), (0.4132, 40), (0.413, 50)]。

如何在Python中计算列表的位数

分位数对于汇总数据集至关重要, 仅次于数据集的最小值和最大值。你还拥有第25、50和75个百分位数, 但它们也称为第一四分位数, 中位数和第三四分位数。

这意味着总共需要五个数字来汇总整个数据集:最小值, 最大值, 中位数和两个四分位数。

数据集的最大值和最小值很容易找到, 但是那些百分位数呢?

这很容易。假设你的数据集中有25个实例(从低到高排序):

  • 第25个百分位数或第一个四分位数的计算方法是将0.25乘以25。得出的数字为6.25或7(如果舍入), 可以指示哪个数字是第25个百分位数:已排序实例列表中的第7个实例。
  • 第三个四分位数或第75个百分位数是通过将0.75乘以25来计算的。如果四舍五入, 得出的数字18.75、19将告诉你实例列表中的第19个实例是第三个百分位数。
  • 数据集的中位数是通过将0.5乘以25得出的。第13个数字将是自12.5舍入后的中位数。

但是你如何编程使其适合你的列表?

最简单的方法是与NumPy合作。按照下面的交互式练习中的说明计算百分位数或你的列表:

如何求和列出明智的

假设你有两个列表:


list1=[1, 2, 3]
list2=[4, 5, 6]

并且你要确保按元素添加list元素;也就是说, 将1加到4、2到5以及3到6。你可以通过两种方式完成此操作。

继续阅读以了解更多信息!

…使用基本的Python

你可以将map与operator.add一起使用以执行逐元素加法:

这将产生一个列表[5, 7, 9]。

请注意, 你将需要如何使用list()来打印map()函数的结果。

或者, 你可以将zip()函数与列表理解一起使用:

…和NumPy

前面的示例在这些较小的列表上可以很好地工作, 但是当你处理更多数据时, 可能应该使用numpy来简化此过程。

然后, 你应确保导入numpy库, 并将列表转换为NumPy数组:

使用Python进行数据科学之旅的下一步是什么?

你已经结束了关于Python列表的交互式教程的结尾。要进行大量的工作和大量的工作, 但是你做到了!

在使用Python进行数据科学之旅中, 列表只是一个很小但必不可少的元素。还有更多值得探索的地方!我们的交互式Python数据科学入门课程非常适合那些想要学习Python的人, 以及如何在数据科学中使用Python的更多信息:它将从Python的基本知识开始, 逐步将你逐步带入中等水平向你介绍NumPy。非常适合(Python)编程经验很少的人!

但是, 如果你已经是Python的高级用户, 则可以考虑阅读我们的《数据科学中级Python》课程, 该课程是为那些准备将其数据科学和Python技能提升到更高水平的人量身定制的。这门课程肯定会带你进一步学习数据科学!本课程向你介绍更多库, 例如matplotlib和pandas, 概念(例如逻辑, 控制流和过滤), 并包括数据科学案例研究, 以巩固你的技能。

你是否已经在将Python用于数据科学, 但你想进一步发展?你可能对我们的将数据导入Python课程感兴趣, 或考虑阅读我们的数据科学预处理和机器学习管道教程系列!

赞(1)
未经允许不得转载:srcmini » 18个最常见的Python列表问题

评论 抢沙发

评论前必须登录!