高阶函数编程补充

高阶函数编程补充

zip

  • 把两个可迭代的内容生成一个可迭代的tuple元素类型组成的内容
# zip 案列

l1 = [1,2,3,4,5,6,7]
s1 = ['a','b','c','d','e','f','g']

z = zip(l1,s1)

print(type(z))

for i in z:
    print(i)

enumerate

  • 跟zip功能比较像
  • 对可迭代对象里的每一个元素,配置上一个索引,然后索引和内容构成一个tuple类型
# 默认从零开始建立索引
l1 = [12,43,543,665,654,24,233,43]
em = enumerate(l1)
l2 = [i for i in em]
print(l2)

# 从20开始进行建立索引
em2 = enumerate(l1,start=20)
l3 = [i for i in em2]
print(l3)

collections模块

  • namedtuple
  • deque

namedtuple

  • tuple 类型
  • 是一个可命名的tuple
import collections

Point = collections.namedtuple("Point",['x','y'])
p = Point(11,22)
print(p.y)
print(p[0])

Circle = collections.namedtuple("Circle",['x','y','r'])

c = Circle(100,100,50);

print(c)

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

dequeue

  • 比较方便的解决了频繁删除插入带来的效率问题
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)
# 如果获取d1里面没有的key,则会报错!
print(d1['one'])
from collections import defaultdict
# lambda表达式,直接返回字符串
func = lambda: "yes,I am boy"
# 通过定义defaultdict()方法,如果取没有的Key,则执行func函数
d2 = defaultdict(func)

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

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

Counter

  • 统计字符串字符出现个数
from collections import Counter
# 为什么下面结果不把”dsahdsjadhjasdjksa“作为键值,而是以其中每一个字母作为键值
# 因为括号里面的内容为可迭代内容
c = Counter("dsahdsjadhjasdjksa")
print(c)
# Counter({'d': 4, 's': 4, 'a': 4, 'j': 3, 'h': 2, 'k': 1})
s = ["wtt","love","Love","whj"]
c = Counter(s)
print(c)
# Counter({'wtt': 1, 'love': 1, 'Love': 1, 'whj': 1})

猜你喜欢

转载自blog.csdn.net/july_whj/article/details/80849934