Python程式列印列表中的偶數


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 單行程式碼

示例

在下面的示例中,我們對每個數字執行與 1 的按位 & 運算。它將檢查最後一位是否設定。如果未設定,則表示該數字為偶數。

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

輸出

20 58

更新於:2022年10月13日

11K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告