python的高级特性

python的高级特性

slice

切片遵循左闭右开原则,即包括左边不包括右边。

普通用法:左开右闭形

a = [1, 2, 3, 4, 5]
print(a[0:3]) # [1, 2, 3]
print(a[:3]) # [1, 2, 3]
print(a[3:]) # [4, 5]
print(a[:]) #[1, 2, 3, 4, 5]

进阶用法:每n个数取一个

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[::2]) # [1, 3, 5, 7, 9] 所有数每2个取1个
print(a[0:6:2]) # [1, 3, 5] 前6个数,每2个取1个

迭代

迭代通过for循环来实现。具体描述:for...in
基本上list,tuple,dict都可以使用for循环

a = [1, 2, 3]
for i in a:
    print(i) # 1 2 3

如何判断一个对象是否为迭代对象?

通过collections.abc模块的Iterable类型判断

from collections.abc import Iterable
a = [1, 2, 3]
print(isinstance(a, Iterable)) # True

如何使用下标循环

a = [1, 2, 3]
for i in range(len(a)):
    print(i) # 0 1 2
for i, value in enumerate(a):
    print(i, value) # 0 1 2

列表生成式

列表生成式是一种简洁的语法,用于创建列表。

a = [x for x in range(5)] # [0, 1, 2, 3, 4]
b = [x * x for x in range(5)] # [0, 1, 4, 9, 16]
c = [(x, y) for x in 'ABC' for y in 'XYZ'] # [('A', 'X'), ('A', 'Y'), ('A', 'Z'), ('B', 'X'), ('B', 'Y'), ('B', 'Z'), ('C', 'X'), ('C', 'Y'), ('C', 'Z')]

生成器

generator是一种迭代器,它可以逐步产生数据。

g = (x * x for x in range(5)) # 生成器
print(list(g)) # [0, 1, 4, 9, 16]
print(next(g)) # 0
print(next(g)) # 1
print(next(g)) # 4
print(next(g)) # 9
print(next(g)) # 16

如何定义generator

def fib(max):
    a, b = 0, 1
    while n < max:
        yield b
        a, b = b, a+b
        n = n + 1
    return 'done'
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值