當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Tuple Matrix轉Tuple List用法及代碼示例


給定一個元組矩陣,將其展平為元組列表,每個元組代表每一列。

例子:

Input : test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)]] 
Output : [(4, 7, 10, 18), (5, 8, 13, 17)] 
Explanation : All column number elements contained together. 

Input : test_list = [[(4, 5)], [(10, 13)]] 
Output : [(4, 10), (5, 13)] 
Explanation : All column number elements contained together.

使用列表理解將元組矩陣轉換為元組列表 + zip()

在此,我們使用 list comprehension 執行扁平化任務,而 zip() 用於執行列配對以呈現為元組對。

腳步:

  1. 該程序初始化一個名為 test_list 的列表,其中包含三個元素,每個元素都是一個元組列表。
  2. 它使用 print() 函數和字符串連接來打印原始列表。
  3. 該程序使用列表理解來展平test_list。 ele 變量表示子列表中的每個單獨元素,而 sub 變量表示test_list 中的每個子列表。展平列表存儲在變量 temp 中。
  4. 該程序使用zip()函數將temp中的元組連接成列對,然後將其存儲在變量res中。請注意,* 運算符用於將 temp 中的元素解包為 zip() 的參數。
  5. 該程序使用print() 函數和字符串連接來打印結果。

Python3


# Python3 code to demonstrate working of 
# Convert Tuple Matrix to Tuple List
# Using list comprehension + zip()
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
# printing original list
print("The original list is : " + str(test_list))
# flattening 
temp = [ele for sub in test_list for ele in sub]
# joining to form column pairs
res = list(zip(*temp))
# printing result 
print("The converted tuple list : " + str(res))
輸出
The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

使用鏈將元組矩陣轉換為元組列表。from_iterable() + zip()

在此,使用鏈執行扁平化任務。from_iterable()和zip()用於執行列配對任務。

Python3


# Python3 code to demonstrate working of 
# Convert Tuple Matrix to Tuple List
# Using chain.from_iterable() + zip()
from itertools import chain
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
# printing original list
print("The original list is : " + str(test_list))
# flattening using from_iterable
res = list(zip(*chain.from_iterable(test_list)))
# printing result 
print("The converted tuple list : " + str(res))
輸出
The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

時間複雜度:氧(納米)
輔助空間:O(納米),

使用extend()、list()和tuple()方法將元組矩陣轉換為元組列表

Python3


# Python3 code to demonstrate working of
# Convert Tuple Matrix to Tuple List
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
# printing original list
print("The original list is : " + str(test_list))
x=[]
for i in test_list:
    for j in i:
        j=list(j)
        x.extend(j)
re1=[]
re2=[]
for i in range(0,len(x)):
    if(i%2==0):
        re1.append(x[i])
    else:
        re2.append(x[i])
res=[]
res.append(tuple(re1))
res.append(tuple(re2))
# printing result
print("The converted tuple list : " + str(res))
輸出
The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

時間複雜度為 O(n^2),其中 n 是輸入矩陣中的元素總數。
該代碼的輔助空間複雜度為 O(n),因為它使用一個列表 x 來存儲矩陣中的所有元素,並使用兩個列表 re1 和 re2 來存儲將元素轉換為元組列表後的元素。

使用 lambda 函數將元組矩陣轉換為元組列表

此代碼將表示為元組元組矩陣的矩陣轉換為列表元組list_tuple。它使用map()和lambda function將list()應用於矩陣中的每個元組,將它們轉換為列表。然後打印生成的列表元組。

Python3


matrix = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
list_tuple = tuple(map(lambda x: list(x), matrix))
print(list_tuple)  # Output: ([1, 2, 3], [4, 5, 6], [7, 8, 9])
輸出
([1, 2, 3], [4, 5, 6], [7, 8, 9])

時間複雜度:O(mn),其中 m 是矩陣中的行數,n 是矩陣中的列數。這是因為映射函數應用於矩陣中的每個內部元組,並且將每個內部元組轉換為列表需要 O(n) 時間。由於有 m 個內部元組,因此總時間複雜度為 O(mn)。
輔助空間:O(mn),表示用於存儲最終列表元組的內存。這是因為每個內部元組都被轉換為一個列表,並且所有列表都存儲在最終元組中。使用的內存量與矩陣的大小成正比。

使用NumPy模塊將元組矩陣轉換為元組列表

分步算法:

  1. 使用給定的輸入初始化列表test_list。
  2. 通過使用列表理解和 numpy 函數數組將 test_list 展平為一維整數數組來創建 numpy 數組。
  3. 數據類型指定為 np.int64。
  4. 使用 numpy 函數 T 轉置數組。
  5. 使用 tuple 和 map 函數將轉置數組轉換為元組列表。
  6. 將生成的元組列表分配給變量 result。
  7. 打印最終結果。

Python3


import numpy as np
# Initialize the list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
# Flatten the list and convert it to a numpy array
array = np.array([col for sublist in test_list for col in sublist], np.int64)
# Transpose the array and convert it to a tuple
result = tuple(map(tuple, array.T))
# Print the result
print("The converted tuple list:", result)

output:

The converted tuple list : [([4, 10, 0], [7, 18, 10]), ([5, 13, 4], [8, 17, 1])

時間複雜度:O(n),其中 n 是輸入列表 test_list 中的元素總數。這是因為該算法涉及對列表中的每個元素進行一次迭代,將其展平為一維 numpy 數組,然後轉置該數組,最後將轉置後的數組轉換為元組列表。這些操作的時間複雜度與輸入列表中的元素數量呈線性關係。
輔助空間:O(n),其中 n 是輸入列表 test_list 中的元素總數。這是因為該算法創建了一個與展平輸入列表大小相同的 numpy 數組,這需要額外的內存。結果變量使用的空間也與輸入列表中的元素數量成正比。總體而言,算法的空間複雜度與輸入列表中的元素數量呈線性關係。

使用遞歸方法將元組矩陣轉換為元組列表。

分步算法:

  1. 定義一個函數展平(lst)以列表作為輸入。
  2. 如果輸入列表伊斯特是一個列表,然後遞歸地展平其中的每個子列表伊斯特使用列表理解來迭代每個子列表元素並應用flatten()對它起作用。如果元素不是列表,則隻需將元素作為列表返回。
  3. 一旦所有子列表都被展平,使用另一個列表理解將它們連接成一個列表。
  4. 使用以下命令將元組的扁平列表轉換為列列表zip()函數與*運算符將元組解壓縮為單獨的參數zip().
  5. 返回結果的列列表。

Python3


# define a recursive function to flatten the list
def flatten(lst):
    if isinstance(lst, list):
        return [ele for sub in lst for ele in flatten(sub)]
    else:
        return [lst]
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
# printing original list
print("The original list is : " + str(test_list))
# flattening and converting to tuple list
temp = flatten(test_list)
res = list(zip(*temp))
# printing result 
print("The converted tuple list : " + str(res))
輸出
The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

時間複雜度:O(n),其中 n 是輸入列表中的元素總數。
輔助的 空間:O(n),因為 flatten () 函數創建一個包含輸入列表所有元素的新列表。



相關用法


注:本文由純淨天空篩選整理自manjeet_04大神的英文原創作品 Python Program to Convert Tuple Matrix to Tuple List。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。