Python 打印列表中的偶数

Python 打印列表中的偶数

Python编程语言是最高效和用户友好的编程语言之一,并且有无尽的用途和应用。Python中声明的列表类似于其他编程语言中的动态大小数组(如C++中的vector和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的幂次和应该排除哪个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使用,因为mod 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是range的大小。

在使用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一行代码

示例

在下面的示例中,我们对每个数字执行按位与(&)运算,它将检查最后一位是否被设置。如果未设置,表示该数字是偶数。

def evens(nums_list):
    print(*filter(lambda x: x % 2 == 0, nums_list))

evens([5, 20, 21, 58, 3])

输出

20 58

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程