1. 掐头去尾取中间
假如有一组成绩, 我们想去掉第一个和最后一个成绩, 然后计算中间成绩的总数:
def drop_first_last(grades):
first, *middle, last = grades
print(f'middle grades are: {middle}')
sum_mid_grades = sum(middle)
print(f'sum of all the grades in middle: {sum_mid_grades}')
return sum_mid_grades
grades = [10, 2, 3, 4, 50]
drop_first_last(grades)
运行结果:
middle grades are: [2, 3, 4]
sum of all the grades in middle: 9
2. 取尾几个
假如有个列表按顺序存的是名字,邮箱,若干个电话号码,我们只想取出全部的电话号码:
record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record
print(f'name: {name} \n'
f'email: {email} \n'
f'phone_numbers: {phone_numbers}')
name: Dave
email: dave@example.com
phone_numbers: ['773-555-1212', '847-555-1212']
Note:
不管解包出数据, phone_numbers: ['773-555-1212', '847-555-1212'] 永远都是一个列表, 即使是零个
3. 去尾
假如有一组按月份排列的销售数据, 我们想计算除当前月份外其他月份的平均销售额, 那就要去掉当前月份也就是最后一个数据:
def cal_pre_avg_sales(sales_record):
*previous_month, current_month = sales_record
previous_avg = sum(previous_month)/len(previous_month)
return previous_avg
sales_record = [100, 400, 545, 1100, 599, 1000]
print(cal_pre_avg_sales(sales_record))
4. 丢掉一些数据
record = ('ACME', 50, 123.45, (12, 18, 2012))
name, *_, (*_, year) = record