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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程