用于打印列表中偶数的 Python 程序

pythonserver side programmingprogramming更新于 2024/2/22 17:50:00

Python 编程语言是最高效、用户友好的编程语言之一,具有无穷无尽的用途和应用。Python 中声明的列表类似于其他编程语言中的动态大小数组(C++ 中的向量和 Java 中的 ArrayList)。列表只是用 [] 括起来并用逗号分隔的项目集合。

在本教程中,我们将学习使用 Python 找出给定列表中所有偶数的解决方案和方法。列表是 Python 中最基本的数据结构之一。它们被广泛使用,并且存储类似的连续数据。即使一个数字能被 2 整除,即没有余数,也被认为是偶数。

我们将通过三种方法来查找列表中的所有偶数。

  • 使用模运算符

  • 使用按位和运算符

  • 检查数字的最后一位

使用模运算符

模运算符 (%) 返回第一个参数除以第二个参数后的余数。

示例

  • 6 % 4 = 2

  • 15 % 4 = 3

  • 27 % 6 = 3

  • 30 % 8 = 6

如果一个数是偶数,那么除以 2 后的余数应该是 0。

从数学上讲,如果 x % 2 == 0,则称 x 为偶数。

我们可以检查此条件是否适用于列表中的每个元素并打印输出。

此方法需要 O(N) 时间,其中 N 是范围的大小。

语法

x = 7
result = (x % 2 == 0)

示例

在下面的示例中,我们实现了上述方法。我们创建了一个函数来过滤给定列表中的所有偶数。

def evens(nums_list): # iteration for num in nums_list: # check for remainder if num % 2 == 0: print(num, end=' ') evens([5, 20, 21, 58, 3])

输出

20 58

使用按位与运算符

在此方法中,我们将使用按位与 (&) 运算符。计算机天生就理解二进制。任何整数都可以表示为位(0 和 1),这基本上指定了我们应该包括哪些 2 的幂以及应该排除哪些。

示例:1011 表示从右到左,1*(2^0) + 1*(2^1) + 0*(2^2) + 1*(2^3) = 11

按位与运算符对每个位执行 & 运算。如果两个位都设置,则此运算符返回 1,否则返回 0。示例:0110 & 1010 = 0010

除了第 2^0 位或最右边的位之外,所有其他位都是 2 的幂,这意味着将它们相加将始终得到偶数。因此,我们可以简单地检查最后一位是否设置,以确定数字是奇数还是偶数。

这种方法也需要O(N)时间,其中N是范围的大小。

语法

x = 7
result = (x & 1 == 0)

示例

在下面的例子中,我们对每个数字执行按位 & 和 1。它将检查最后一位是否设置。如果它未设置,则表示数字是偶数。

def evens(nums_list): # iteration for num in nums_list: # check for remainder if num & 1 == 0: print(num, end=' ') evens([5, 20, 21, 58, 3])

输出

20 58

通过检查数字的最后一位数字

通过纯粹的观察,我们可以确定如果数字是偶数,它必须以 0、2、4、6 或 8 结尾。这可以与对 10 取模一起使用,因为对 10 取模可以得出数字的最后一位数字。

此方法需要 O(N * 5) 时间,因为会检查每个元素是否存在于大小为 5 的元组中。

示例

  • 12345 % 10 = 5 (奇数)

  • 4232 % 10 = 2 (偶数)

语法

x = 7
result = x % 10 in (0, 2, 4、6、8)

示例

我们在这里使用"in"关键字在元组中快速查找。也可以使用集合来提供恒定的循环时间。

def evens(nums_list): # iteration for num in nums_list: # check for remainder if num % 10 in (0, 2, 4, 6, 8): print(num, end=' ') evens([5, 20, 21, 58, 3])

输出

20 58

一点 Python 奖励

Python 包含一个名为 filter() 的内置函数,它返回一个迭代器。

它需要两个参数,第一个是布尔函数,第二个是它应该应用的可迭代对象。我们可以使用上述任何一种方法作为函数来实现这一点。

这种方法也需要O(N)的时间,其中N是范围的大小。

使用filter()时必须特别小心,因为它是可耗尽的,这意味着一旦使用它,无论是用于遍历还是转换为列表,如果再次遍历,它都会返回None,所以最好将其转换为列表并存储在另一个变量中。

语法

evens = filter(lambda x: x % 2 == 0, [5, 20, 21, 58, 3])

示例

在下面的例子中,我们对每个数字执行按位&,其中1。它将检查最后一位是否设置。如果未设置,则表示数字为偶数。

def evens(nums_list): even_numbers = filter(lambda x: x % 2 == 0, nums_list) for num in even_numbers: print(num, end=' ') evens([5, 20, 21, 58, 3]

使用 filter() 的 Python One Liner

示例

在下面的例子中,我们对每个数字执行按位 & 操作,并将 1 置位。它将检查最后一位是否已设置。如果未设置,则表示数字为偶数。

def evens(nums_list): print(*filter(lambda x: x % 2 == 0, nums_list)) evens([5, 20, 21, 58, 3])

输出

20 58


相关文章