所有内容参照自 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
实例可以进行数学运算操作