使用 Python 在陣列列表中分離 0 和 1?
陣列是一種線性資料結構,其元素儲存在連續的記憶體地址中。它主要用於對相同資料型別的元素進行分組。
給定一個整數陣列。根據文章“在陣列中分離 0 和 1”,將陣列分成兩半,0 和 1。陣列應該將所有 0 放置在左邊,所有 1 放置在右邊。
輸入輸出場景
讓我們考慮一個輸入及其輸出場景,以在陣列列表中分離 0 和 1 -
Input: [0,1,1,0,0,1,0,0,0] Output: [0,0,0,0,0,0,1,1,1]
正如我們在輸出中看到的,所有 0 和 1 都已在陣列列表中分離,0 在左邊,1 在右邊。
在本文中,我們將討論在 Python 中分離陣列列表中 0 和 1 的各種方法。
透過計數 0 和 1
找到 0 的總數。計數將為 M。確定計數後,我們可以在陣列的開頭放置 M 個 0,並在剩餘的 n – M 個位置放置 1。
示例
以下是一個使用計數 0 和 1 方法在陣列列表中分離 0 和 1 的示例 -
def segregating(array, x) : # Counting the 0's in array count = 0 for i in range(0, x) : if (array[i] == 0) : count = count + 1 # Loop for segregationg all the 0's for i in range(0, count) : array[i] = 0 # Loop for segregationg all the 1's for i in range(count, x) : array[i] = 1 # Function for printing the segregated array def print_the_array(array , x) : print( "The segregated array is :",end = "") for i in range(0, x) : print(array[i] , end = " ") # The driver function array = [0,1,1,0,0,1,0,0,0] x = len(array) segregating(array, x) print_the_array(array, x)
輸出
以下是上述程式碼的輸出 -
The segregated array is :0 0 0 0 0 0 1 1 1
使用 2 個索引進行遍歷
Python 的 index() 函式返回給定列表中元素或字串中字元的位置。
為了檢查或使用資料作為過程的一部分,需要訪問儲存在陣列中的每個元素(項)。這被稱為遍歷陣列。
演算法
以下是在使用 2 個索引遍歷陣列時分離陣列列表中 0 和 1 的方法 -
保留兩個索引。將第一個索引設定為左邊的 0,將第二個索引設定為右邊的 n-1。
向左或向右移動時遵循。
只要有 0 可用,就繼續增加左邊的索引。
只要有 1 可用,就繼續減少右邊的索引。
如果 left < right,則交換 arr[left] 和 arr[right]。
示例
以下是在使用 2 個索引遍歷陣列時分離陣列列表中 0 和 1 的示例 -
def segregating(array, s): # Initializing both the left and the right index left, right = 0, s-1 while left < right: # Incrementing the left index while seeing 0 at the left while array[left] == 0 and left < right: left += 1 # Decrementing right index while seeing 1 at right while array[right] == 1 and left < right: right -= 1 if left < right: array[left] = 0 array[right] = 1 left += 1 right -= 1 return array # The driver code array = [0,1,1,0,0,1,0,0,0] array_size = len(array) print("The segregated array is :") print(segregating(array, array_size))
輸出
以下是上述程式碼的輸出 -
The segregated array is : [0, 0, 0, 0, 0, 0, 1, 1, 1]
使用列表推導式
列表推導式是 Python 中的常用技巧。在這裡,我們應用此方法。我們從使用者輸入構建一個數組,並且每個條目都應該是 0 和 1 的隨機組合。然後將左側的 0 分組,右側的 1 分組。我們遍歷陣列以分離兩個不同的列表,一個包含 0,另一個包含 1,然後我們將這兩個列表連線起來。
示例
以下是在使用列表推導式分離陣列列表中 0 和 1 的示例 -
# Segregate all the 0's and 1's present in an array list def seg0s1s(A): n = ([i for i in A if i==0] + [i for i in A if i==1]) print(n) # Driver program if __name__ == "__main__": A=list() n=int(input("Enter the size of the array ::")) print("Enter the number ::") for i in range(int(n)): k=int(input("")) A.append(int(k)) print("The New ArrayList ::") seg0s1s(A)
輸出
以下是上述程式碼的輸出 -
Enter the size of the array ::7 Enter the number :: 1 0 1 0 0 1 1 The New ArrayList :: [0, 0, 0, 1, 1, 1, 1]