当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。