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


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

  • 使用切片

  • 使用 enumerate() 和模运算符

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

使用切片

算法(步骤)

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

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

  • 打印输入元组。

  • 要将输入元组拆分为 n(3)个元素,使用range() 函数(返回一个从 0 开始并以 1(默认)递增并在给定数字之前停止的数字序列),从 0 循环到元组的长度使用len() 函数(len() 方法返回对象中的项目数),以 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() 和模运算符

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 食谱

算法(步骤)

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

  • 使用def关键字创建一个函数splitTupleandGroup(),通过将 k、输入元组作为参数传递给它,将输入元组拆分为 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 元组划分为子元组的替代方法。我们还学习了如何将元组转换为迭代器。如何将迭代器转换为列表,解包列表并将它们作为元组返回

更新于:2022-11-09

9K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告