您的位置:首页 > 编程语言 > Python开发

Python系统学习笔记14(续13:高阶函数补充:zip/enumerate、collections模块namedtuple/deque/defaultdict/Counter)

2019-03-14 10:22 453 查看

zip

  • 把两个可迭代内容生成一个可迭代的tuple元素类型组成的内容
# zip 案例
l1 = [ 1,2,3,4,5]
l2 = [11,22,33,44,55]

z = zip(l1, l2)

print(type(z))
print(z)

for i in z:
print(i)

enumerate

  • 跟zip功能比较像
  • 对可迭代对象里的每一元素,配上一个索引,然后索引和内容构成tuple类型
# enumerate案例1
l1 = [11,22,33,44,55]

em = enumerate(l1)

l2 = [i for i in em]
print(l2)
  • 自定义索引开始位置
em = enumerate(l1, start=100)

l2 = [ i for i in em]
print(l2)

collections模块

  • namedtuple
  • deque

namedtuple

  • tuple类型
  • 是一个可命名的tuple
import collections
Point = collections.namedtuple("Point", ['x', 'y'])
p = Point(11, 22)
print(p.x)
print(p[0])
Circle = collections.namedtuple("Circle", ['x', 'y', 'r'])

c = Circle(100, 150, 50)
print(c)
print(type(c))

# 想检测以下namedtuple到底属于谁的子类
isinstance(c, tuple)

deque

  • 比较方便的解决了频繁删除插入带来的效率问题
from collections import deque

q = deque(['a', 'b', 'c'])
print(q)

q.append("d")
print(q)

q.appendleft('x')
print(q)

defaultdict

  • 当直接读取dict不存在的属性时,直接返回默认值
d1 = {"one":1, "two":2, "three":3}
print(d1['one'])
print(d1['four'])  #这句会报错
from collections import defaultdict
# lambda表达式,直接返回字符串
func = lambda: "刘大拿"
d2 = defaultdict(func)

d2["one"] = 1
d2["two"] = 2

print(d2['one'])
print(d2['four'])

Counter

  • 统计字符串个数
from collections import Counter

# 为什么下面结果不把abcdefgabced.....作为键值,而是以其中每一个字母作为键值
# 需要括号里内容为可迭代
c = Counter("abcdefgabcdeabcdabcaba")
print(c)
s = ["liudana", "love", "love", "love", "love", "wangxiaona"]
c = Counter(s)

print(c)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: