Python 如何将元组拆分为子元组
在本文中,我们将展示如何将Python元组拆分为子元组。以下是完成此任务的各种方法:
- 使用切片
-
使用enumerate()和mod运算符
元组 是一种不可变的、无序的数据类型,在Python中用于存储集合。列表和元组在很多方面相似,但列表的长度是可变的,而元组的长度是固定的且不可变。
使用切片
步骤
以下是执行所需任务的算法/步骤:
- 创建一个变量来存储输入的元组。
-
打印输入的元组。
-
使用 range()函数 (返回从0开始以1(默认)递增并在给定数之前停止的数字序列)和 len()函数 (返回对象中的项数),将输入的元组拆分为n(3)个元素。循环从0到元组的长度,步长为n。
-
将每次迭代的当前迭代器的数据存储到当前迭代器索引+n值的位置(子元组)。
-
将拆分为4个元组组的结果元组打印出来。
示例
以下程序使用切片将给定的Python元组拆分为子元组:
# input tuple
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
# printing input tuple
print ("Input Tuple:", inputTuple)
# Giving the Number of sub-tuples required
n = 3
# splitting the input tuple with n(3) elements
# Looping from 0 indexes to length of tuple with n as step value using the range() function
# For each iteration storing all values from the current iterator to the current iterator index +n values(sub tuples)
resultTuple = tuple(inputTuple[i:i + n] for i in range(0, len(inputTuple), n))
# printing the result tuple
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))
使用enumerate()和mod运算符
enumerate()方法将计数器添加到可迭代对象中,并返回enumerate对象。
语法
enumerate(iterable, start=0)
参数
- iterable − 可以是任何支持迭代的序列/对象/可迭代对象。
-
start − enumerate()从此值开始计数。如果没有指定start,则默认使用值0。
模运算符(%)
在Python中,%符号被称为 模运算符 。它给出了左操作数除以右操作数的结果。它用于通过获取余数来解决除法问题。
示例
以下程序使用enumerate()和模运算符将给定的Python元组拆分为子元组。
# input tuple
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
# printing input tuple
print ("Input Tuple:", inputTuple)
# splitting the input tuple with n(3) elements
# Looping in the given tuple using the enumerate() function
# Splitting into tuples of size 3 so we used n%3==0 condition
resultTuple = tuple(inputTuple[e:e + 3] for e, k in enumerate(inputTuple)
if e % 3 == 0)
# printing the result tuple
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
步骤
以下是执行所需任务的算法/步骤-
- 创建一个函数 splitTupleandGroup() ,使用 def 关键字将输入的元组分成k个元组(这里每个元组包含3个元素的4个元组)。
-
将给定的输入元组传递给 iter() 函数(在Python中, iter() 函数返回一个迭代器对象,用于将可迭代对象转换为迭代器),并使用[]运算符将其转换为列表,然后将其与所需的子元组数目(k)相乘。
-
使用 zip() 函数( zip() 函数用于合并两个列表/迭代器)将所有上述子列表组合起来,通过使用*运算符解包它们的子列表。
-
创建一个变量来存储输入元组。
-
打印输入元组。
-
调用 splitTupleandGroup() 函数来创建子元组。
-
打印将其分成4个元组组的结果元组。
示例
以下程序使用 iter() 和 zip() 函数将给定的Python元组分割成子元组-
# creating a function to split the input tuple into groups of
# k tuples(here 4-tuples with 3 elements)
def splitTupleandGroup(k, inputTuple):
# Multiply the given tuple with the number of sub-tuples needed
args = [iter(inputTuple)] * k
# Return the zip object of the above args
return zip(*args)
# input tuple
inputTuple = (10, 20, 30, 40, 50, 1, 2, 3, 4, 5, 6, 7)
# printing input tuple
print ("Input Tuple:", inputTuple)
# calling the splitTupleandGroup function to group the k elements of the tuple
# and converting into a tuple
resultTuple = tuple(splitTupleandGroup(3, inputTuple))
# printing the result tuple
print ("Splitting the input tuple into a 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))
结论
在这篇文章中,我们学习了三种将Python元组分割成子元组的替代方法。我们还学习了如何将元组转换为迭代器。如何将迭代器转换为列表,解压列表并将它们作为元组返回。