如何在 Python 中将列表中的所有元素除以一个数字

在 Python 中将一个list中的所有元素除以一个数字,这个任务通常涉及遍历列表并对每个元素应用除法运算。例如,给定一个列表 a = [14, 8, 0, 12, 981, 21, -99] 和一个除数 d = 7,将每个元素除以 7 后的结果将是 [2, 1, 0, 1, 140, 3, -14]。

使用列表推导式(List Comprehension)

列表推导式是转换列表元素最有效的方法之一。它提供了一种简洁的语法来遍历列表并执行操作,例如将每个元素除以一个数字。这种方法通过在一行可读的代码中对每个元素应用操作来创建一个新列表。

a = [14, 8, 0, 12, 981, 21, -99]
d = 7 # divisor

res = [x // d for x in a]
print(res)

Output

[2, 1, 0, 1, 140, 3, -15]

解释: 列表推导式遍历列表 a 中的每个元素 x,并对每个元素执行整数除法运算(//)。结果被收集到一个新列表 res 中。

目录

  • 使用 map()
  • 使用 for 循环
  • 使用 Numpy

使用 map()

在将列表中的所有元素除以一个数字时,我们可以将 map()lambda 函数结合使用,以实现高效的转换。这种方法避免了使用循环显式遍历列表的开销,但对于简单的操作,它可能比列表推导式稍微低效一些。

a = [14, 8, 0, 12, 981, 21, -99]
d = 7

res = list(map(lambda x: x // d, a))
print(res)

Output

[2, 1, 0, 1, 140, 3, -15]

解释: map() 函数利用 lambda 函数将整数除法 x // d 应用于列表 a 中的每个元素,然后使用 list() 将结果转换为列表。

使用 for 循环

在这种方法中,我们显式地遍历列表中的每一项并执行除法运算,将结果追加到一个新列表中。虽然这种方法对于较小的列表来说效果很好,但由于每次循环迭代和 append()操作都会引入额外的开销,因此对于较大的数据集来说效率较低。

a = [14, 8, 0, 12, 981, 21, -99]
d = 7 # divisor
res = [] # initialize empty list

for x in a:
    res.append(x // d)
print(res)

Output

[2, 1, 0, 1, 140, 3, -15]

解释: for 循环遍历列表 a 中的每个元素 x。对于每个元素,它执行整数除法 x // d,即将 x 除以 d,并将结果追加到 res 列表中。

使用 Numpy

在处理大型数据集时,使用 NumPy将列表中的所有元素除以一个数字会非常高效,因为 NumPy 使用向量化技术来执行操作。这允许我们在单个、高度优化的步骤中对整个数组应用除法运算,从而减少与列表相比的计算开销。

import numpy as np
a = [14, 8, 0, 12, 981, 21, -99]
d = 7 # divisor

a_np = np.array(a)  # Convert `a` into NumPy array 
res = a_np // d
print(res)

Output

[  2   1   0   1 140   3 -15]

解释: 这段代码导入了 NumPy,将列表 a 转换为 NumPy 数组 a_np,并对每个元素执行除以除数 d 的整数除法 //。结果存储在 res 中。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21567.html
点赞
0.00 平均评分 (0% 分数) - 0