如何在 Python 中压缩不均匀元组

pythonserver side programmingprogramming更新于 2024/1/11 19:28:00

简介

在 Python 中,元组是根据需求存储和处理数据的广泛使用的方法之一。元组中涉及许多操作,其中根据问题陈述的要求对数据进行预处理和转换。压缩操作是压缩不同元组的最常见和最广泛使用的操作之一。

在本文中,我们将讨论 Python 中不均匀元组的压缩、不均匀元组的压缩实际上意味着什么,以及使用代码解释执行相同操作的不同方法。本文将帮助人们了解不均匀元组压缩背后的核心思想,并在必要时帮助人们执行相同操作。

现在让我们开始讨论 Python 中压缩的含义和 Python 中不均匀元组的压缩。

什么是不均匀元组的压缩?

在 Python 中,zip 或压缩这个词意味着我们将不同元组的元素相加,这意味着我们将不同元组的元素组合成一对,并将其存储在一个公共元组中。

例如,如果我们有两个这样的元组:

T1 = (1, 2, 3)

T2 = ("one", "two", "three")

然后对这些元组执行压缩操作将产生以下输出:

T_Zip = ((, "one"), (2, "two"), (3, "three'))

此处的不均匀元组意味着两个元组的大小或长度不相同,这意味着其中一个元组的大小小于或大于另一个元组。对于具有相同大小或长度的元组,压缩操作是一项非常简单的任务,但是当压缩两个不同大小或不均匀的元组时,它会变得非常复杂。

但是,我们可以使用一些方法来压缩两个不均匀元组。让我们逐一讨论。

压缩不均匀元组

在 Python 中,我们主要有三种方法可以压缩不均匀元组。

  • 使用 For 循环和枚举

  • 使用列表推导式

  • 使用 Numpy 库

方法 1:使用 For 循环和枚举

我们可以使用 for 循环和枚举函数压缩不均匀元组。这是执行此操作的最简单、最有效的客户端方法之一。

# 使用 for 循环和枚举

# 定义元组
test_tup1 = (7, 8, 4, 5)
test_tup2 = (1, 5, 6)

# 打印输入元组
print("输入元组 1 是 : " + str(test_tup1))
print("输入元组 2 是 : " + str(test_tup2))

res = []

# 使用 for 循环和枚举
for i, j in enumerate(test_tup1):
res.append((j, test_tup2[i % len(test_tup2)]))

# 打印压缩元组 1 和 2 后得到的最终元组
print("输出压缩元组 1 和 2 的元组2 是:" + str(res))

如我们在上面的代码中看到的,元组 1 和 2 被 () 否定,并且它们的大小或长度不同。

现在 for 循环与枚举一起使用,枚举附加元组 1 和元组 2 元素并以元组格式给出输出。

输出

以下代码的输出将是:

输入元组 1 是:(7, 8, 4, 5)
输入元组 2 是:(1, 5, 6)
从元组 1 和 2 输出的压缩元组是:[(7, 1), (8, 5), (4, 6), (5, 1)]

方法 2:使用列表推导式

也可以使用列表推导式压缩两个不均匀元组。这里可以使用三元运算符。

# 使用列表推导式

# 定义元组
tup1 = (7, 8, 4, 5)
tup2 = (1, 5, 6)

# 打印输入元组
print("输入元组 1 是 : " + str(tup1))
print("输入元组 2 是 : " + str(tup2))

# 定义 if else 条件
res = [(tup1[i], tup2[i % len(tup2)])
if len(tup1) > len(tup2)

else (tup1[i % len(tup1)], tup2[i])

# 对元组 1 和 2 使用 for 循环
for i in range(max(len(tup1), len(tup2)))]

# 压缩元组 1 和 2 后打印最终结果元组
print(" 从元组 1 和 2 压缩后的输出元组为 :" + str(res))

如我们在以上代码中看到的那样,定义了两个不同大小的元组,然后写入 if else 条件,其中首先检查元组的长度,然后在最后的 for 循环中附加两个元组并返回输出。

输出

以下代码的输出为:

输入元组 1 为:(7, 8, 4, 5)
输入元组 2 为:(1, 5, 6)
由元组 1 和 2 压缩后的输出元组为:[(7, 1), (8, 5), (4, 6), (5, 1)]

方法 3:使用 Numpy 库

Numpy 是用于对数据执行操作的最广泛使用的库之一。这里使用数组格式的数据,我们几乎可以做任何事情,并使用 numpy 将数据转换为任何内容。

#使用numpy模块压缩不均匀元组

#导入numpy模块
import numpy as np

#定义元组
test_tup1 = (7, 8, 4, 5)
test_tup2 = (1, 5, 6)

#将元组转换为数组格式
arr1 = np.array(test_tup1)
arr2 = np.array(test_tup2)

#使用np.tile
arr2_tiled = np.tile(arr2, (len(arr1) // len(arr2) + 1))[:len(arr1)]

#对数组1和平铺数组2使用column_stack压缩元组
res_arr = np.column_stack((arr1, arr2_tiled))

# 将数组输出转换为元组
res = tuple(map(tuple, res_arr))

# 压缩元组 1 和 2 后打印最终结果元组
print("从元组 1 和 2 压缩后输出的元组为 : " + str(res))

如上代码所示,我们首先导入了 numpy 库,然后定义了两个不同大小的元组。

然后如上所述,numpy 库需要数组格式的数据才能处理,因此元组被传递给 np.array,后者将数据转换为数组格式。

一旦我们将元组转换为数组形式,np.column_stack 将用于附加数组的元素,然后对元组进行压缩。

然后使用 tuple() 函数再次将最终数组转换为元组。

输出

以下代码的输出为:

从元组 1 和 2 输出的压缩元组为:((7, 1), (8, 5), (4, 6), (5, 1))

结论

在本文中,我们讨论了两个不均匀元组或两个不同大小(长度)元组的压缩操作。上面讨论的压缩不均匀元组的三种不同方法将有助于人们理解压缩操作,并有助于人们在必要时执行相同的操作。


相关文章