Python 如何使用*运算符对列表进行操作
在Python中,列表是一个有序的序列,可以容纳多种对象类型,如整数、字符或浮点数。在其他编程语言中,列表相当于一个数组。
重复运算符(*)
重复运算符是由序列数据类型(可变和不可变)支持的。*重复运算符*创建该对象的多个副本,并将它们连接在一起。当与整数一起使用时,*执行乘法,但当与列表、元组或字符串一起使用时,*执行重复操作。
在本文中,我们将展示在Python中如何使用*运算符对列表进行操作。以下是几个不同的示例,以了解*在Python列表中的工作原理:
- 对列表项使用重复运算符(
*) -
重复运算符(
*)作为引用的工作原理 -
使用
*运算符解包函数 -
当给定的重复值为0时
对列表项使用重复运算符(*)
Python列表还包括*运算符,它允许您创建一个新列表,其中元素重复指定的次数。
以下程序使用*运算符将列表重复给定次数:
# input list
inputList = [5, 6, 7]
# Repeating the input list 2 times using the * operator
print(inputList * 2)
输出
执行上述程序后,将生成以下输出结果 −
[5, 6, 7, 5, 6, 7]
在这里,我们使用 * 运算符将随机值的列表重复两次,因此输出结果是给定列表重复两次。
重复运算符 (*) 作为引用的工作原理
序列/列表中的项不是复制,而是被引用多次。
inputList_1=[[3]]
inputList_2= inputList_1*3
示例
列表 inputList_2 的元素与列表 inputList_1 中的相同元素对应。因此,更改列表 inputList_1 中的任何元素将会改变列表 inputList_2 中的元素。
# Input list
inputList_1=[4]
# Multiplying the whole input list_1 three times using the Repetition Operator
inputList_2= inputList_1*3
print('The Input list 1 without modification : ',inputList_1)
print('The Input list 2 without modification : ',inputList_2)
# Modifying the first element value of the input list with 20
inputList_1[0]= 20
#printing the output
print('The Input list 1 after modification : ',inputList_1)
print('The Input list 2 after modification : ',inputList_2)
输出
The Input list 1 without modification : [4]
The Input list 2 without modification : [4, 4, 4]
The Input list 1 after modification : [20]
The Input list 2 after modification : [4, 4, 4]
第一个列表只有一个元素,即4,然后我们使用重复操作符(*)将其乘以三次,并保存在另一个列表中(输入列表2)。当我们改变第一个列表的值时,可以看到第二个列表的元素发生变化,而第二个列表(输入列表2)并没有改变。这意味着序列/列表中的项目/元素被多次引用而不是复制。
使用*运算符来解包函数
这种方法在以原始格式(没有逗号和括号)打印数据时非常方便。许多程序员尝试通过聚合函数来去除逗号和括号,因此这个简单的前缀星号可以解决解包它们的问题。
步骤
以下是执行所需任务的算法/步骤-
- 创建一个变量来存储输入列表,并给它一些随机值。
-
要打印由空格分隔的列表元素而不带方括号[],首先我们将列表转换为字符串,将str和list作为参数传递给map()函数。它将列表的每个元素转换为字符串类型,并返回结果列表。join()函数(join()函数用于连接由字符串分隔的序列元素)用于将结果列表转换为字符串。
-
除了之前的方法,我们可以使用星号运算符(
*)按空格分隔打印列表
示例
# input list
inputList = ['TutorialsPoint', 'Python', 'Codes', 'hello', 5, 'everyone', 10, 5.3]
# Converting list elements to string using map()
# Applying join() function to convert list to string
# Without using the asterisk (*) operator
print('Without Using * Operator :')
print(' '.join(map(str,inputList)))
# Using the asterisk (*) operator
print('Using * operator : ')
print (*inputList)
输出
Without Using * Operator :
TutorialsPoint Python Codes hello 5 everyone 10 5.3
Using * operator :
TutorialsPoint Python Codes hello 5 everyone 10 5.3
使用两种方法输出结果保持不变。
当给定重复值为0时
如果提供的值小于等于0,则返回一个空序列。
示例1
以下程序在输入乘以0时返回一个空列表 –
# input list
inputList = [5, 6, 7]
# returning an empty list when repetition Value is given 0
print(inputList * 0)
输出
在执行上述程序后,将生成以下输出结果
[]
我们在这里使用了0作为重复的值,因此我们得到一个空列表,因为任何数乘以0都等于0(空)
示例2
当输入与任意小于0的数字相乘时,以下程序将返回一个空列表
# input list
inputList = [5, 6, 7]
# returning an empty list when repetition Value is given -4
print(inputList * -4)
输出
执行上述程序将会生成以下输出:
[]
因为*运算符只接受正数值,所以当我们将-4作为重复值传递时,我们得到一个空列表。如果有任何负值,它无法将它们相乘,因此返回一个空列表。
结论
本文涵盖了与*重复运算符在列表上的每种情况。我们还讨论了它在不同情境下的行为。我们学会了如何使用*运算符以空格分隔的方式打印列表元素。这在各种情况下都很有用,例如编程竞赛,可以节省时间而不是编写大量的函数。
极客笔记