Python高级特性

2021/9/8 12:36:05

本文主要是介绍Python高级特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • Python高级特性
    • 切片
    • 迭代
    • 列表生成式,可以用来生成list
    • 生成器
      • 情况1
      • 情况2
    • 迭代器

Python高级特性

Python是很高级的语言。所以,很多操作都是可以简化的。因此,使用Python的高级特性可以省很多事。

切片

原则,用冒号,[起点:终点:步幅]

没有起点表示从第一个开始切,没有终点表示切到最后一个,没有步幅表示切一个。

起点终点是1,2,3,表示正数第一个正数第二个。

起点终点是-1,-2,-3,表示倒数第一个倒数第二个。

>>> vocabulary
('a', 'b', 'c', 'd', 'e', 'f', 'g')
>>> v=vocabulary[:]
>>> v
('a', 'b', 'c', 'd', 'e', 'f', 'g')
>>> v1=vocabulary[::] #步长为1从头取到尾
>>> v1
('a', 'b', 'c', 'd', 'e', 'f', 'g')
>>> v[1:3] #从第1个取到第3个前
('b', 'c')
>>> v[-3:-1] #从倒数第三个取到倒数第一个前
('e', 'f')
>>> v[-3:] #从倒数第三个取到最后一个
('e', 'f', 'g')
>>> v3=v[::2]#每两个取一个
>>> v3
('a', 'c', 'e', 'g')

迭代

Python中for不是通过下标来完成。因此,Python中for循环的抽象程度更高。

只可以通过collection.abc模块判断之后是Iterable的对象都可以进行迭代。

用法:

from collections.abc import Iterable
print(isinstance('abc', Iterable))
print(isinstance([1, 2, 3], Iterable))

输出:

True
True

dict可以通过key迭代,也可以通过value迭代

可以通过enumerate使list获得下标,这种情况可以获得一个变量值。

列表生成式,可以用来生成list

for 前面的部分就是一个表达式。for后面可以加任何筛选条件

>>> [x * x for x in range(1,10) if x % 2 == 0]
[4, 16, 36, 64]

可以通过range 和 if的筛选生成各种各样的list

还可以进行循环嵌套

>>> [A+B for A in 'ABC' for B in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

此时的第二重循环作为第一重循环的函数体存在

生成器

有点类似于递推,不断地算出数列的下一个。

情况1

利用列表生成式的格式创造生成式

>>> g=(A+B for A in 'ABC' for B in 'XYZ')
>>> next(g)
'AX'
>>> next(g)
'AY'

只有通过调用next()函数才会进行下一步的推算

情况2

通过yield来进行生成,函数在执行到yield处时中断并返回。当进行下一次执行时,从中断处继续向下执行。

def yanghui(max):
    L = [1, ]
    for i in range(1, max + 1):
        if i == 1:
            L = [1, ]
        if i == 2:
            L = [1, 1]
        if i > 2:
            t = 1
            for j in range(1, i - 1):
                L[j], t = t + L[j], L[j]
            L.append(1)
        yield L, i

y = yanghui(10)
for n in y:
    print(n)

运行结果:

([1], 1)
([1, 1], 2)
([1, 2, 1], 3)
([1, 3, 3, 1], 4)
([1, 4, 6, 4, 1], 5)
([1, 5, 10, 10, 5, 1], 6)
([1, 6, 15, 20, 15, 6, 1], 7)
([1, 7, 21, 35, 35, 21, 7, 1], 8)
([1, 8, 28, 56, 70, 56, 28, 8, 1], 9)
([1, 9, 36, 84, 126, 126, 84, 36, 9, 1], 10)

迭代器

迭代器其实是一个序列,不过,不访问不计算下一个。,list、dict、str是可以遍历的,但是他们无法迭代,是非更新的。适用于next()函数的变量才是可迭代的。



这篇关于Python高级特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程