Python学习之旅(十二)

Python基础知识(11):高级特性

一、分片(切片)

 

通过索引来获取一定范围内的元素

#字符串
s="Alice"
s[0:4:2]
结果:
'Ai'

#列表
l=[1,2,3,4,5,6]
l[0:2]
结果:
[1, 2]

#元组
t=(1,2,3,"a","b","c")
t[:]
结果:
(1, 2, 3, 'a', 'b', 'c')

二、迭代

给定一个元组或列表,通过for循环遍历,这种遍历称为迭代

def test():
    l=["A","l","i","c","e"]
    for i in l:
        print(i)

test()

结果:

A
l
i
c
e

通过collections模块的Iterator判断一个对象是否是可迭代对象

from collections import Iterable
isinstance("more", Iterable)
结果:True

enumerate函数可以把一个list变成索引-元素对,可以在for循环中同时迭代索引和元素本身:

for i in enumerate(["more","money","never","God"]):
    print(i)

结果:    
(0, 'more')
(1, 'money')
(2, 'never')
(3, 'God')

三、列表生成式

可以用list(range(1, 11))生成列表 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

列表生成式用一行语句代替循环生成列表

l=[]
for i in range(1,10):
    l.append(i*i)

    
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

[x*x for x in range(1,10)]
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

四、生成器

生成器generator:列表中的元素可以在循环中按照某种算法推算出来机制

 创建一个generator的方法:

1、把一个列表生成式的[]改成(),就创建了一个generator:

L = [x * x for x in range(9)]
L

结果:

[0, 1, 4, 9, 16, 25, 36, 49, 64]

五、迭代器

凡是可作用于for循环的对象都是Iterable类型

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象

资料来源:

廖雪峰官方网:https://www.liaoxuefeng.com

原文地址:https://www.cnblogs.com/finsomway/p/10009098.html