当前位置: 首页 > 网络应用技术

python的sum():和谐方法

时间:2023-03-08 00:23:21 网络应用技术

  python的构建-in函数sum()是一种有效且为数值列表和Pythonic的方法。添加多个数字是许多计算中的常见中间步骤,因此SUM()是Python程序员的非常方便的工具。

  作为附加且有趣的用法,您可以将列表和成本组连接到使用sum()。当您需要列表列表的列表时,它可能非常方便。

  在本教程中,您将如何学到:

  这些知识将帮助您使用sum()或其他替代方案和特殊工具来有效地处理和解决代码中的总结问题。

  在编程中添加值是一个相当普遍的问题。操作:

  1 + 2 + 3 + 4 + 5 = 15

  在数学方面,此表达式非常简单。它将指导您完成一系列简短的添加,直到找到所有数字的总和为止。

  您可以手动执行此特定的计算,但可以想象其他不太可能的情况。如果您有一个特别长的数字列表,则手动添加到可能很低且易于犯错误。如果您甚至不知道在此中会发生多少个项目列表?最后,想象一个场景,您需要添加的项目数量是动态或不可预测的。

  在这种情况下,无论您的数字列表是长列表还是简短列表,Python在解决问题和问题方面都非常有用。

  如果您想从头开始构建自己的解决方案,则可以尝试使用for循环:

  >>>

  在这里,您首先创建总计并将其初始化为0。此变量被用作累积器。您可以存储中间结果,直到获得最终结果为止。循环迭代数字并通过使用广泛的作业来累积每个连续值。

  您也可以将for循环打包在函数中。这样,您可以重复使用不同列表的代码:

  >>>

  在sum_numbers()中,您将迭代迭代对象 - 尤其是值列表 - 作为参数,并返回输入列表的介质值的总和。如果输入列表为空,则函数返回0.循环0与您以前看到的相同。

  您也可以使用递归而不是迭代。Recursive是一种功能性编程技术,该功能在其自身的定义中被调用。换句话说,递归函数在周期中称呼自己:

  >>>

  当您定义递归功能时,您会在无限周期中冒险。要防止这种情况,您需要定义停止递归和调用功能的基本情况,并开始隐藏周期的递归情况。

  在上面的示例中,基本情况意味着零长度列表的总和为0。递归情况意味着总价值是第一个值数[0],加上剩余值编号的总和[1:]。由于递归情况在每次迭代中使用一个简短的序列,因此您希望遇到数字为零长度列表时的基本情况。作为最终结果,您将获得输入列表中所有项目的总和。

  注意:在此示例中,如果您不检查空输入列表(您的基本情况),则sum_numbers()将永远不会遇到无限的递归周期。当您的数字列表长度达到0时,代码将尝试访问该项目空列表将触发索引并中断周期。

  通过此实现,您将永远无法获得此函数的总和。您的IndexError一次获得一个。

  python中数字列表总和的另一个选择是使用functool。要获取数字列表的总和,您可以将任何操作员传递。ADD或适当的lambda函数作为第一个用于降低()的参数:

  >>>

  您可以调用delus()并减少或折叠。函数且迭代为参数。输入中的数字。作为缺点,redain()在与空人打电话时提出了泳装。

  在第二个示例中,摘要函数是lambda,该函数将两个数字返回两个数字。

  因为在这样的编程中很常见,所以有必要为每个数字编写一个新功能以汇总每次。加上您可以使用的最可读的解决方案。

  Python提供了一个特殊的构建功能来解决此问题。此功能很容易称为sum()。由于它是一个构建的函数,您可以直接在代码中使用它,而无需导入任何内容。

  可读性是Python哲学背后的最重要原则之一。当需要值列表时,可视化您需要进行周期执行操作。您希望它穿越一些数字,将其添加到中间变量,然后返回最终和谐。

  现在考虑一下如何对和平的配方()redion(),可以说比基于周期的解决方案更无法阅读或指导。

  这就是为什么将sum()添加到python2.3作为构建-in函数以提供构建-in函数的Pythonic解决方案。

  >>>

  哇!这很整洁,不是吗?它像简单的英语一样读写,并且显然传达了您在输入列表上执行的操作。sum()的使用比自行车或redaim call()调用更可读性。,当您提供空迭代对象时,sum()不会引起泳装。相反,可以理解为返回0。

  您可以使用以下两个参数进行调用:您可以致电:

  1. Iteraable是可以保存任何python迭代对象的必要参数。迭代对象通常包含值,但也可以包括列表或元组。

  2.启动是一个可选的参数,可以保存初始值。然后将此值添加到最终结果。默认为0。

  在内部,从左到右添加启动时间的值的值。输入值通常是数字,但是您也可以使用列表和组。选项参数启动可以接受数字,列表或元组,取决于在内容的内容的内容上。它不能带一个字符串。

  在以下两个部分中,您将了解代码中代码中使用的基本知识。

  基本参数:峰值

  接受任何python峰值作为其第一个参数,sum()通用,可重复使用和多态性。对此功能,您可以使用sum()列表,元组,收集,范围,范围对象和字典:

  >>>

  在所有这些示例中,sum()计算输入迭代中所有值的算术,无论其类型如何。在两个字典示例中,sum()返回输入字典键的总和。第一个示例默认为键到键。到键,第二个示例需要总结,因为输入字典调用输入字典。

  如果您的字典将数字存储在其值中,并且您想总结这些值而不是键,则可以在示例中使用它。值()喜欢.keys()。

  您也可以将列表派生词用作参数。这是计算一系列值的示例:

  >>>

  python 2.4将生成器表达式添加到语言中。相似,当您使用生成器表达式作为参数时,按预期工作:

  >>>

  该示例显示了解决问题和问题的最柔感技术之一。它在一系列代码中提供了优雅,可读和高效的解决方案。

  可选参数:开始

  第二个可选参数启动使您可以提供一个值来初始化该过程。此参数在需要按顺序处理累积值时方便:

  >>>

  在这里,您提供了100启动的初始值。净效果是sum()添加了此值更清晰,可读。

  如果您不提供启动值,则默认值为0。默认值0确保返回总输入值的预期行为。

  sum()的主要目的是提供一种pythonic方法来添加一个值。因此,您已经学会了如何使用此函数来总结整数。此外,您可以使用任何其他数字python类型,例如float,复杂,十进制和分数。

  以下是使用sum()的不同数字类型值的值的一些示例:

  >>>

  在这里,您首次使用sum()和浮动点号。第一个符号表示无限的值,因此sum()返回inf。第二个符号代表nan(不是数字)。由于您无法将数字添加到非数字中,因此您将获得NAN结果。

  复杂,十进制和分数数的其他示例。在所有情况下,sum()使用适当的数字类型来返回结果累积。

  尽管sum()主要用于操作该值,但您也可以使用此功能连接列表和元素顺序。出于此原因,您需要为开始提供适当的值:

  >>>

  在这些示例中,您使用sum()连接列表和元组。这是一个有趣的功能。您可以使用它显示列表列表或元组中的列表。这些示例的关键要求是选择适当的值开始。例如,如果要连接列表,则开始需要保留列表。

  在上面的示例中,sum()在内部执行连接操作,因此仅适用于支持连接的序列类型,但字符串除外:除外:

  >>>

  当您尝试将字符串与sum()连接时,您将获得typeError。作为例外消息提示,您应该使用str.join()在python.later中连接字符串,当您输入sum()方法的使用时,您将看到使用此方法的示例。

  到目前为止,您已经学会了使用sum()。您已经学会了如何使用此函数添加值,以及如何连接列表和元组的序列。

  在本节中,您将在代码中查看有关何时以及如何汇总()的更多信息。通过这些实际示例,您将了解到,当您执行一系列数字的总和作为中间步骤的计算时,此内部功能非常方便。

  您还将理解,当您使用列表和群集时,此sum()非常有用。您会看到一个特殊示例是需要显示列表时。

  您编写的第一个示例与如何使用如何使用“开始参数”的值的累积列表有关。

  假设您正在开发一个系统,以管理多个不同销售点的给定产品的销售。每天,您都会从每个销售点收到销售单位的报告。您需要系统地计算总计累计总和以了解多少产品整个公司都在一周内销售。要解决此问题,您可以使用sum():

  >>>

  通过使用“启动”,您可以设置初始值的总和,从而使您可以将连续单元添加到先前计算的提示中。本周末,您将获得公司的总销售单位。

  sum()的另一种实际情况是在进一步计算之前将其用作中间计算。样品的中值之和。

  如果您有样品[2、3、4、2、3、6、4、2],并且要计算算术的平均值,则可以解决此操作:

  (2 + 3 + 4 + 2 + 3 + 3 + 6 + 4 + 2) / 8 = 3.25

  如果要使用Python加快加速,则可以将其分为两部分。本计算的第一部分是将数字添加到sum()的任务中。示例中的数字计数。要计算您的部门,您可以使用len():

  >>>

  在这里,调用sum()计算示例中的数据点的总和。下一步,您使用len()获取数据点的数量。在本文中,您执行所需的删除以计算样本的算术平均值。

  实际上,您可能需要将此代码转换为具有一些其他功能的功能,例如描述性名称并检查 - out短示例:

  >>>

  在内部平均()中,您首先检查输入示例中是否有任何数据点。在变量中,num_points可以在没有len()的情况下再次致电。返回语句计算示例的算术平均值,并将其发送回呼叫代码。

  注意:数据样本的平均值是统计和数据分析中的常见操作。python标准库提供了一个名为统计的方便模块来处理这些类型的计算。

  在统计模块中,您会找到一个函数earne():

  >>>

  statistics.mean()函数的行为与您以前编码的函数非常相似。您的意思是()使用数值示例调用时,您将获得输入数据的算术平均值。当您将空列表传递给表示(),您将获得一个统计信息。请注意,当您平均()使用适当的示例调用时,您将获得所需的平均值。如果您的平均值()使用空示例调用,那么您将获得ValueError的结果。

  您可以使用的另一个问题是找到两个相等的数值序列。点点和输入序列的乘积在每对值中。3)和(4、5、6),然后您可以通过加法和乘法手动计算它们的积累点:

  1×4 + 2×5 + 3×6 = 32

  要从输入序列提取连续值对,您可以使用zip()。然后,您可以使用Generator表达式乘以每对值。在本文中,sum()可以汇总产品:

  >>>

  使用Zip(),您可以使用每个输入序列中的值来生成列表。发电机表达式循环每个元群 - 先前布置的连续性用于zip()。最后一步是添加产品sule()在一起。

  上面的示例中的代码是有效的。最长的序列将导致结果不正确。

  为了处理这种可能性,您可以在自定义函数中调用包装sum(),并为输入序列的长度提供适当的检查:

  >>>

  在这里,dot_product()使用两个序列作为参数并返回其相应的点。如果输入序列的长度不同,则该函数将触发一个值。

  自定义函数中的嵌入式函数允许您重复使用代码。它还使您有机会描述功能名称,以便用户只能通过读取功能名称知道函数的角色。

  列表列表是python中的一个常见任务。填写您的列表列表,您需要将其缩放为包含原始嵌套列表中所有项目的列表。您可以在python中使用任何方式。使用for循环,如以下代码所示:

  >>>

  在flatten_list()中,所有嵌套列表a_list包含在遍历遍历中的a_list。然后使用增强分配操作( +=)将它们连接起来。结果,您将获得一个包含原始嵌套列表中所有项目的平面列表。

  但是请继续!您已经学会了如何在本教程中使用该序列。您可以使用此功能像上面的示例一样显示列表吗?是的!就是这样。

  >>>

  很快!一行代码,矩阵现在是一个平坦的列表。但是,使用sum()似乎不是最快的解决方案。

  串联解决方案的任何提示的一个重要缺点是,在幕后,每个中间步骤都会创建一个新列表。这在内存使用中可能非常浪费。最终列表只是每个在每个中创建的列表的最近创建的列表连接循环。使用列表派生词,以确保您只创建并返回一个列表:

  >>>

  这个新版本的Flatten_list()在内存使用方面更有效,浪费更少。但是,对嵌套的理解可能难以理解和理解。

  使用.append()可能是最容易的-TO -READ列表列表列表列表列表:

  >>>

  在此版本的flatten_list()中,您可以看到一个人读取您的代码,该函数会遍历a_list.first中的每个sublist。

  在“ for循环”中,它使用.appnd()使用最终公寓遍历每个项目公众。就像以前的衍生产品一样,该解决方案仅在此过程中创建一个列表。该解决方案的优点之一是它具有强大的可读性。

  据您了解到,sum()通常有助于处理该值。但是,Python在处理浮点时提供了一个替换工具。在数学上,您会找到一个名为fsum()的函数fsum(),它可以帮助您提高整体准确性浮动 - 点计算。

  您可能有一个要连接或链接多个迭代对象的任务,以便可以将它们用作整体处理。在这种情况下,您可以查看Itertools模块的功能链()。

  您也可能有一个连接字符串列表的任务。您在本教程中了解到您不能用于连接字符串。此功能不是为字符串连接构造的。最Pythonic替换方法是使用str.join()。

  如果您的代码不断使用浮点和sum()的数量,则应考虑Math.fsum()。此函数更仔细地执行浮动 - 点计算总和()以提高计算准确性。根据其文档的计算,fsum()“说多个中间零件,并通过跟踪避免准确丢失。”该文档提供了以下示例:

  >>>

  使用fsum(),您可以获得更准确的结果。

  >>>

  在这些示例中,两个函数返回相同的结果。这是因为不可能准确地指示这两个值的数量0.1和0.2二进制浮点:

  >>>

  sum(),但与众不同,fsum()可以帮助您在添加非常大的数字时减少浮点错误的传播:

  >>>

  哇!第二个示例非常令人惊讶,并且完全失败的sum()。与sum(),您将获得0.0结果。这与20000.0的正确结果相去甚远,就像您得到的fsum()一样。

  如果您正在寻找一个方便的工具来连接或链接一系列迭代对象,请考虑使用Itertool中的链()。此功能可以使用多个迭代并构建迭代器。迭代器从第一和第二生成一个项目。

  >>>

  当您调用链()时,您将从输入的对象获得项目的迭代器。在本示例中,您可以使用连续项目next()的访问权限。如果要使用列表,则可以使用其列表()使用迭代器并返回常规的python列表。

  链()也是Python主席名单的一个不错的选择:

  >>>

  要使用平面列表链(),您需要使用迭代包装运算符( *)。此计算符号的所有输入都可以是迭代对象,以便链()可以使用它们并生成相应的迭代器。最后一步是调用列表()构建所需的平面列表。

  如您所见,sum()未连接或连接到字符串。如果需要执行此操作,那么Python中的首选和最快的工具是str.join()。该方法使用一系列字符串作为参数,并返回一个新连接字符串:

  >>>

  使用。join()是连接字符串的最有效,最有效的方法。在这里,您将字符串列表用作参数,然后从输入中输入单个字符串。请注意。join()在连接期间使用呼叫方法的字符串作为分隔器。在此示例中,您呼叫。join()字符串由单个空格字符(“”)组成,因此原始字符串从最终字符串中的空格分开。

  您现在可以使用Python的构建-in函数sum()添加多个值。此功能提供了一种有效,可读和Pythonic方法来解决代码中的总和问题。如果您处理需要在中找到的数学计算价值,然后其总和可以成为您的救主。

  在本教程中,您是如何学到的:

  有了这些知识,您现在可以以Pythonic,可读和有效的方式添加多个值。

  本文分享了华为云社区的诚意,作者:Yuchuan。