如何将Python元组拆分为子元组?

如何将Python元组拆分为子元组?

在本文中,我们将展示如何将Python元组拆分为子元组。以下是完成此任务的各种方法 –

  • 使用切片

  • 使用enumerate()和mod运算符

元组 是Python中用于存储集合的不可变,无序数据类型。列表和元组在许多方面都相似,但与长度可变且可变的列表相比,元组具有固定长度且 不可变

阅读更多:Python 教程

使用切片

算法(步骤)

以下是执行所需任务的算法 / 步骤 –

  • 创建一个变量以存储输入元组。

  • 打印输入元组。

  • 使用 range()函数 (返回从0开始递增1(默认)并在给定数字之前停止的数字序列)从0到元组长度遍历,使用 len()函数 (对象中的项目数由len()函数返回)从n作为步长值。

  • 对于每次迭代中,将当前迭代器到当前迭代器索引+ n值的所有数据存储到一个变量中(子元组)

  • 将结果元组拆分为4个元组组的每个3元素后,打印结果元组。

示例

以下程序使用切片将给定的Python元组拆分为子元组 –

#输入的元组
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)

# 打印输入元组
print ("输入元组:" , inputTuple)

# 指定所需的子元组数量
n = 3

# 使用n(3)元素拆分输入元组
# 使用range()函数从0索引到具有n作为步长值的元组长度遍历
# 对于每个迭代,将当前迭代器到当前迭代器索引+ n值的所有数据存储到一个变量中(子元组)
resultTuple = tuple(inputTuple[i:i + n] for i in range(0, len(inputTuple), n))

# 打印结果元组
print ("将输入元组拆分为每个3个元素的4个元组组:\n", resultTuple)

输出

执行上述程序会生成以下输出 –

输入元组:(10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
将输入元组拆分为每个3个元素的4个元组组:
((10, 20, 30), (40, 50, 1), (2, 3, 4), (5, 6, 7))

使用enumerate()和mod操作符

enumerate() 方法将计数器添加到可迭代对象中,并返回枚举对象。

语法

enumerate(iterable, start=0)

参数

  • iterable − 可以是任何支持迭代的序列/对象/可迭代对象。

  • start − enumerate() 从此值开始计数。 如果未指定开始值,则使用值0。

模数运算符(%)

在Python中,%符号称为 模数运算符 。 它给出将左操作数除以右操作数的结果。 它用于通过取得余数来解决除法问题。

示例

以下程序使用enumerate()和mod操作符将给定的Python元组拆分为子元组−

# 输入元组
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)

# 打印输入元组
print ("Input Tuple:", inputTuple)

# 使用n(3)个元素拆分输入元组
# 使用enumerate()函数在给定元组中循环
# 拆分成大小为3的元组,因此我们使用了n%3==0条件
resultTuple = tuple(inputTuple[e:e + 3] for e, k in enumerate(inputTuple)
if e % 3 == 0)

# 打印结果元组
print ("Splitting the input tuple into the group of 4-tuples with 3 elements in each:\n", resultTuple)

输出

执行上述程序将生成以下输出 −

Input Tuple: (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
Splitting the input tuple into group of 4-tuples with 3 elements in each:
((10, 20, 30), (40, 50, 1), (2, 3, 4), (5, 6, 7))

使用itertools receipes

算法(步骤)

以下是要执行所需任务的算法/步骤 −

  • 使用 def 关键字创建一个函数 splitTupleandGroup() ,通过将k,输入元组作为参数传递给它进行将输入元组拆分成k个元组(这里是每个拥有3个元素的4个元组)的操作

  • 将给定的输入元组传递给 iter() 函数(在Python中,iter()函数返回一个迭代器对象,该对象用于将可迭代对象转换为迭代器),并使用[]运用符将其转换为列表,并将其乘以所需的子元组数(k)。

  • 使用 zip() 函数将所有上述子列表组合(可以使用zip()函数将两个列表/迭代器组合),通过使用*运算符取消打包子列表来传递子列表。

  • 创建一个变量来存储输入元组。

  • 打印输入元组。

  • 调用 splitTupleandGroup() 函数来创建子元组群组。

  • 将拆分后的结果元组打印出来。

示例

以下程序使用 iter()zip() 函数将给定的Python元组拆分成子元组−

# 创建一个函数将输入元组分成k个元组组(这里是3个元素的4个元组)
def splitTupleandGroup(k, inputTuple):
    # 将给定元组乘以所需的子元组数量
    args = [iter(inputTuple)] * k

    # 返回上述args的zip对象
    return zip(*args)

# 输入元组
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)

# 输出输入元组
print ("输入元组:", inputTuple)

# 调用splitTupleandGroup函数将k个元素分组为元组
# 并将其转换为元组
resultTuple = tuple(splitTupleandGroup(3, inputTuple))

# 输出结果元组
print ("将输入元组分为4个由每个3个元素组成的元组组:\n", resultTuple)

输出

执行以上程序后,将生成以下输出 −

输入元组: (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
将输入元组分为4个由每个3个元素组成的元组组:
((10, 20, 30), (40, 50, 1), (2, 3, 4), (5, 6, 7))

结论

在本文中,我们学习了将Python元组分为子元组的三种替代方法。 我们还学习了如何将元组转换为迭代器。 如何将迭代器转换为列表,解包列表并将它们作为元组返回

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程