Python * 号操作符的用法

Python * 号操作符的用法

Python中星号 * 操作符

问题:

我们有一个数学考试成绩序列,但是不知道有多少个成绩,现在需要去掉一个最大值和一个最小值,求平均分。

解决方法:

使用星号(*)表达式

首先看一下序列赋值的基本用法:


>>>a,b,c=(1,2,3)


>>>a

1


>>>b

2


>>>c

3

下面看星号(*)表达式的基本用法:

用法1:


>>>a,*b=(1,2,3)


>>>a

1


>>>b

[2, 3]

用法2:


>>>*a,b=[1,2,3]


>>>a

[1, 2]


>>>b

3

用法3:


>>>a,*b,c=’123′


>>>a

‘1’


>>>b

[‘2’]


>>>c

‘3’

用法4:


>>>a,*b,c=(1,2)


>>>a

1


>>>b

[]


>>>c

2

有一点需要特别注意在赋值语句中使用星号(*)表达式获取序列值之后,其一定是一个列表,无论有没有获取到元素。

|

再看不在赋值语句中使用*号:


>>>a=(1,2,3,4)


>>>print(a)

(1, 2, 3, 4)


>>>print(*a)

1 2 3 4


>>>print(1,2,3,4)

1 2 3 4

在这里,星号的作用就是将一个序列分解成多个独立的元素。

再看一个例子:


>>>a=[‘abc’]


>>>print(a)

[‘abc’]


>>>print(*a)

abc


>>>
>>>print(‘abc’)

abc

介绍到这里,下面来看一下我们开头的问题,如何解决:

代码如下:

def myAvg(records):

try:

records=sorted(records)

first,*middle,last=records

avg=(sum(middle))/len(middle)


return avg

except:


return -1

if __name__==’__main__’:

a=[]

b=[78]

c=[80,90]

d=[3,2,1]

e=[10,20,30,40,50]

recs=(a,b,c,d,e)

for rec in recs:

print(myAvg(rec))

|

输出结果如下:

-1

-1

-1

2.0

30.0


>>>

喜欢文章,欢迎大家转发!!!

|