Python中的 ‘*表达式’
2018-07-16 本文已影响0人
HavenYoung
一、‘*表达式’的作用
在分解元素的基础上,当分解元素的个数或者被分解对象中的元素个数不确定时,通过‘*表达式’来完成分解。
num = ['1', '2', '3', '4', '5', '6', '7']
st, nd, *th = num
print(st)
print(nd)
print(th)
结果:
1
2
['3', '4', '5', '6', '7']
如代码和运行结果可知,st和nd从num中各分得了一个元素,th则分得了剩余的所有元素。并且这里的分配按照从左到右的顺序进行。注意:这里的th变量变成了一个列表。且num为元组时也可以对其进行分解。
二、‘*表达式’的简单使用
简单的获取不同位置的多个数据
#舍去最后两个元素
def dorp_middle_last(grades):
*first, middle, last = grades
return first
#舍弃第一个和最后一个元素
def drop_first_last(grades):
first, *middle, last = grades
return middle
#舍弃前两个元素
def drop_first_middle(grades):
first, middle, *last = grades
return last
grades = ['1', '2', '3', '4', '5', '6', '7']
print(dorp_middle_last(grades))
print(drop_first_last(grades))
print(drop_first_middle(grades))
结果:
['1', '2', '3', '4', '5']
['2', '3', '4', '5', '6']
['3', '4', '5', '6', '7']
三、‘*表达式’在字典中的使用
当我们把num变成一个字典类型的变量时,用“一”中的方法对其进行分解,结果会怎样?
num = {'1' : 'one', '2' : 'two', '3' : 'three', '4' : 'four', '5' :'five'}
st, nd, *th = num
print(st)
print(nd)
print(th)
结果:
1
2
['3', '4', '5']
注意:这里分解出来的元素不再是字典类型!
特别的当num为集合时,每次分解时得到元素都不一样,并且顺序不定。
num = {'1', '2', '3', '4', '5', '6', '7'}
st, nd, *th = num
print(st)
print(nd)
print(th)
结果:
3
2
['6', '7', '4', '5', '1']
本文仅作为学习讨论使用,如有错误,欢迎指出、讨论。