python高级函数map reduce filter deque defaultdict counter json

map

参考视频黑马
对每个元素进行操作。

  • 需要手动转换为list
list1 = [1,2,3,4,5]
def func(x):
    return x**2
res = list(map(func, list1))
print(res)

reduce

求累计结果,返回值为数值。累乘,累加。

# 累乘 累加
import functools
list1 = [1,2,3,4,5]
def func3(a, b):
    return a * b
res3 = functools.reduce(func3, list1)
print(res3)

filter

满足条件的留下

  • 需要手动转换为list
list1 = [1,2,3,4,5]
def func2(x):
    return x%2==0
res2 = list(filter(func2, list1))
print(res2)

deque

  • append()
  • appendleft()
  • insert()
  • pop()
  • popleft()
  • remove()
  • reverse()
from collections import deque

dq = deque(['a', 'b', 'c'])
dq.append(1)  # 右边加
dq.appendleft(2)  # 左边加
dq.insert(2, 'x')  # 下标为2的位置插入
dq.pop()  # 弹出右边
dq.popleft()  # 弹出左边
dq.remove('x')  # 删除指定元素
dq.reverse()  # 反转
print(dq)

OrderedDict

保持关键字key的顺序,有序字典。底层通过双向链表来实现的,内部通过map函数对指定字典元素序列做映射。

  • update()
  • pop()
  • move_to_end()
from collections import OrderedDict

od = OrderedDict()
od['c'] = 1
od['a'] = 2
od['b'] = 3
print(od)  # key是按照元素插入的顺序来排序的,而不是按照key本身
keys = ['apple', 'banana', 'cat']
values = [4, 5, 6]
od.update(zip(keys, values)) # 向老字典之中追加一个新字典,相当于合并了两个字典
print(od)
od.pop('a')  # 删除
print(od)
od.move_to_end('b')  # 将'b'元素移动到队尾
print(od)

defaultdict

  • 使用字典时,如果所引用的键不存在,就会抛出异常-KeyError,从而导致整个程序终止执行
from collections import defaultdict
# defaultdict在键不存在时返回一个默认值
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
print(dd['key1'])
print(dd['key2'])  # 不存在的key返回N/A

counter

  • 统计频次
from collections import Counter
colors = ['red', 'red', 'blue', 'blue', 'green', 'yellow']
result = Counter(colors)
print(dict(result))  # 统计词频
print(result.most_common(2))  # 频次最高的两个对象

datetime

  • 当前时间
  • 时间戳
from datetime import datetime
now = datetime.now()
print(now)
date = datetime(2021, 1, 3, 9, 30)
print(date)
print(date.year)
print(date.month)
print(date.day)
print(date.hour)
print(date.minute)
print(date.second)
# 我们把197011日称为epoch time记为0
print(date.timestamp())
print(now.strftime("%Y"))

json

import json
# 定义一个字典
data = {
    
    
    "name": "yaojun",
    "age": 100,
    "price": 11.20
}
json_str = json.dumps(data)  # 将字典data序列化为json对象
print(json_str)  # 序列化的json对象本质是字符串

data1 = json.loads(json_str)
print(data1)
# 如果我们要处理的是文件而不是字符串,则可以使用json.dump()和json.load()来编码和解码

Guess you like

Origin blog.csdn.net/SYaoJun/article/details/109253615