Python中的 ‘*表达式’

一、‘*表达式’的作用

在分解元素的基础上,当分解元素的个数或者被分解对象中的元素个数不确定时,通过‘*表达式’来完成分解。

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']

本文仅作为学习讨论使用,如有错误,欢迎指出、讨论。

你可能感兴趣的:(Python中的 ‘*表达式’)