所有内容参照自 python cookbook

1.解压序列赋值给多个变量 一般来讲我们赋值变量是这样:

a = 1

python可以这样:

a,b = 1,2

或者这样:

e=[1,2,3,4]
a,b,c,d=e

当然 你想解压几层就解压几层,比如这样:

data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
name, shares, price, (year, mon, day) = data

如果你只是想要其中的几个变量,这。。。。python没有给出特别的方式,你可以用一些不常用的变量名去占位。 比如:

data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
_, shares, price, _ = data

虽然说是列表解析 ,但同样适用于字符串,文件对象,迭代器,生成器

s = 'hello'a,b,c,d,e = s

有时候迭代对象的元素会超过变量个数,那该怎么办 ,这时候就要用到星号表达式了

record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record

解压出来的phone_numbers永远是列表,即使没有元素,当然,更常见的是把星号表达式做为参数 比如:

def add(*args):
    n=0
    for i in args:
        n+=i    return n

然后我们就可以传任意个参数给add函数了~

add(1,2,3)
add(5,1,2,6,7)

2.序列中出现次数最多的元素

collections.Counter类就是专门为这类问题设计的,并用一个most_common()方法直接给出答案

words = ['look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes','the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the','eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into','my', 'eyes', "you're", 'under']from collections import Counter
word_counts = Counter(words)
top_three = word_counts.most_common(3)
(print(top_three)# Outputs [('eyes', 8), ('the', 5), ('look', 4)]

在底层实现上,一个 Counter 对象就是一个字典,将元素映射到它出现的次数上。比如:

>>> word_counts['not']1

并且可以手动增加计数

word_counts['not']+=1

Counter实例可以进行数学运算操作