Python 元组上的*
运算符如何工作
在Python中,元组类似于列表。两者之间的区别是,一旦元组被赋值,其元素就不能更改,而列表可以,即元组是不可变的,而列表是可变的。
重复运算符(*
):
序列数据类型(包括可变和不可变类型)支持重复运算符。*
重复运算符将该对象复制多次并将它们连接在一起。当与整数一起使用时,*
执行乘法,但当与列表、元组或字符串一起使用时,*
执行重复操作。
在本文中,我们将展示*
运算符在Python元组上的工作原理。以下是不同的示例,以了解*如何在python元组上工作:
- 元组元素上的重复运算符(
*
) -
嵌套元组条目上的重复运算符(
*
) -
使用*运算符解包函数
-
当重复值为0时
方法1:元组元素上的重复运算符(*
)
当您将一个元组乘以任何整数时,您将获得另一个元组,其中包含输入元组中的所有元素重复x次。例如,inputTuple * 4
表示将元组inputTuple的项目重复4次。
示例
以下程序使用*运算符将元组重复指定的次数-
# input tuple
inputTuple = (3, 4, 2)
# repeating the input tuple 4 times and printing the result tuple
print(inputTuple*4)
输出
在执行以上程序之后,将产生以下输出结果 –
(3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2)
在这里,我们使用*运算符将一个随机值的元组乘以4次,这样输出就由给定的元组重复了4次组成。
方法2:在嵌套元组项上使用重复运算符(*
)
示例
# input nested tuple
nestedTuple =((4,9,8),(3,6))
# repeating the input nested tuple 3 times and printing the result tuple
print(nestedTuple*3)
输出
执行后,上述程序将生成以下输出 –
((4, 9, 8), (3, 6), (4, 9, 8), (3, 6), (4, 9, 8), (3, 6))
在这种情况下,我们使用了一个嵌套元组的随机值。然后我们将元组乘以三次,输出元组包含给定的嵌套元组乘以三次。不是将元组的每个元素相乘,我们可以看到它将整个嵌套元组乘以三次。
方法3:当重复值为0时
当提供的值小于等于0时,将返回一个相同类型的空序列。
示例1
当输入的元组乘以0时,下面的程序将返回一个空元组 –
# input tuple
inputTuple =(4,9,8)
# returning an empty tuple when repetition Value is given 0
print(inputTuple*0)
输出
在执行时,上述程序将生成以下输出-
()
我们在这里将重复值设为0,所以我们得到一个空元组(),因为任何与0相乘的东西都等于0(空)
示例2
当输入与任何小于0的数相乘时,以下程序返回一个空元组-
# input tuple
inputTuple =(4,9,8)
# returning an empty tuple when repetition Value is less than 0
print(inputTuple*-32)
输出
在执行时,上述程序将生成以下输出:
()
因为*
运算符只接受正数值,所以当我们将-32作为重复值传递时,我们得到一个空元组。如果有任何负值,它就无法将它们相乘,因此返回一个空元组。
方法4:使用位置参数展开函数。
星号(*
)运算符将序列/集合展开为位置参数。因此,如果你有一个元组并且想要将该元组的元素作为参数传递给每个位置,则可以使用*运算符而不是分别引用每个元素。
步骤
按照以下算法/步骤来执行所需的任务:
- 创建一个变量来存储输入的元组,并给它一些随机值。
-
为了打印以空格分隔的元组元素而不带方括号[],首先我们通过将str和元组作为参数传递给map()函数来将元组转换为字符串。它将元组的每个元素转换为字符串类型,并返回结果元组。join()函数(join()用于以字符串分隔符连接序列的元素)用于将结果元组转换为字符串。
-
与之前的方法不同,我们可以使用星号运算符(*)来打印以空格分隔的元组。
示例
以下程序打印以空格分隔的元组元素:
# input tuple
inputTuple = ('TutorialsPoint', 'Python', 'Codes', False, 3.4, 5, 'hello', 'everyone')
# Converting tuple elements to string using map()
# Applying the join() function to convert a tuple to a string
# Without using the asterisk (*) operator
print('Without Using * Operator :')
print(' '.join(map(str,inputTuple)))
# Using the asterisk (*) operator
print('Using * operator : ')
print (*inputTuple)
输出
在执行后,上述程序将生成以下输出 –
Without Using * Operator :
TutorialsPoint Python Codes False 3.4 5 hello everyone
Using * operator :
TutorialsPoint Python Codes False 3.4 5 hello everyone
结论
本文涵盖了元组上使用*
重复运算符的每一种情况。我们还讨论了它在不同场景下的行为。我们学习了如何使用*
运算符将元组元素以空格分隔打印出来。这在各种情况下都很有用,例如面试时你想返回一个以空格分隔的元组,或者编程竞赛中你想节省时间而不是编写多个函数。我们还学习了*运算符对嵌套元组的行为,以及它如何对嵌套元组进行多次重复而不是对嵌套元组中的每个元素进行多次重复。