python 的 *表达式。需要从某个可迭代对象中分解出N个元素,但是这个课迭代对象的长度可能超过N,这会导致“分解的值过多(too many values to unpack)”的异常。


例如:

record = {'Dave','[email protected]','773-555-1212','847-555-1212'}

name,email,*phone_numbers = user_record


>>>phone_numbers 

['773-555-1212','847-555-1212']


有时候可能想分解出某些值然后丢弃他们。在分解的时候,不能只是指定一个单独的*,但是可以使用几个常用来表示待丢弃值的变量名,比如:_  或者 ign(ignored)


例如:

record =  ('ACME',50,123.45,(12,18,2012))

name,*_,(*_,year) = record

>>>year

2012


找到最大的或者最小的N个元素


heapq模块中有两个函数 --- nlargest() 和 nsmallest()   


import heapq

nums ={1,8,2,23,7,-4,18,23,42,37,2}

print (heapq.nlargest(3,nums))   [42,37,23] # 得到最大的三个数字

print (heapq.nsmallest(3,nums)) [-4,1,2] #得到嘴笑的三个数字