如何将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元组分为子元组的三种替代方法。 我们还学习了如何将元组转换为迭代器。 如何将迭代器转换为列表,解包列表并将它们作为元组返回
极客教程