python基础汇总

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 06:57   51   0

这篇是个人python的学习笔记,收集包括但不限于各类书籍和项目中需要使用的纯python知识。

争取每日更新。

1. 序列拆分为独立变量

任何可迭代对象可以通过赋值拆分为独立变量

p = (4, 5)
x, y = p

数量不匹配会报错误

ValueError:need more than xx values to unpack

2. 任意长可迭代对象中分解元素

如果可迭代对象长度大于需要分解出的N个元素,会报分解值过多错误(too many value to unpack),这个时候可以使用 *表达式解决问题

first, *middle, last = range(10)
print(first)
print(*middle)
print(last)

输出:
0
1 2 3 4 5 6 7 8
9

一个递归算法:

def sum_(items):
    head, *tail = items
    return head + sum_(tail) if tail else head

print(sum_([1, 2, 3, 4, 5]))

输出:
15

3. 使用deque保留最近记录

collections.deque可以模拟简单队列,实现类似功能

from collections import deque

q = deque(maxlen=3)
q.append(1)
q.append(2)
q.append(3)
print(q)
q.append(4)
print(q)
q.appendleft(0)
print(q)

输出
deque([1, 2, 3], maxlen=3)
deque([2, 3, 4], maxlen=3)
deque([0, 2, 3], maxlen=3)

相较于列表更多的操作是支持两端操作,比如添加或者弹出

4. yield的使用

实现yield的函数为生成器

def test():
    print("starting:")
    i, j = 0, 0
    while 1:
        print('i=', i)
        i += 1
        yield i
        print('j=', j)
        j += 1
        yield j

t = test()
print(next(t))
print('-'*5)
print(next(t))
print('-'*5)
print(next(t))
print('-'*5)
print(next(t))
print('-'*5)
print(next(t))

输出:
starting:
i= 0
1
-----
j= 0
1
-----
i= 1
2
-----
j= 1
2
-----
i= 2
3

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP