切片和迭代
2021-7-4
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

 

切片

取一个listtuple的部分元素是非常常见的操作。比如,一个list
取前3个元素,应该怎么做?笨办法:
对这种经常取指定索引范围的操作,用循环十分繁琐,因此Python提供了切片(Slice)操作符,大大简化这种操作。
 
对应上面的问题,取前3个元素,用一行代码就可以完成切片:L[0:3]
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引012,正好是3个元素。
 
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple
 
字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
 
 

迭代

如果给定一个listtuple,可以通过for循环来遍历这个listtuple,这种遍历称为迭代(Iteration)。
Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如C代码:
 
Pythonfor循环抽象程度要高于Cfor循环,Pythonfor循环不仅可以用在listtuple上,还可以作用在其他可迭代对象上。list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是只要是可迭代对象,无论有无下标,都可以迭代,比如dict
当使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,不太关心该对象究竟是list还是其他数据类型。
 
如何判断一个对象是可迭代对象呢?方法是通过collections.abc模块的Iterable类型判断:
 
如果要对list实现下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
 
for循环里同时引用了两个变量,在Python里是很常见的:
 
  • Python
  • 函数的参数列表生成式
    目录