切片(Slice)
对经常取指定索引范围的操作,需要用循环的操作,Python提供了切片(Slice)操作符,能大大简化这种操作。
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[startIndex:endIndex]
为切片,startIndex
为起始位置索引,endIndex
为结束位置(但不包括endIndex
的元素),如果startIndex
不写,默认为0。
L[:3]#即['Michael', 'Sarah', 'Tracy']
L[1:3]#即['Sarah', 'Tracy']
startIndex
和endIndex
支持负数,同样startIndex
为起始位置索引,endIndex
为结束位置(但不包括endIndex
的元素),负数即为获取倒数元素,-1表示倒数第一个也就是最后一个。如果endIndex
不写,默认为-1。
L[-3:]#即['Tracy', 'Bob', 'Jack']
L[-3:-1]#即['Tracy', 'Bob']
如果startIndex
和endIndex
都不填写相遇复制一个list
L[startIndex:endIndex:step]
其中step
表示每几个取一个
L[::2]#表示每两个去一个也就是['Michael', 'Tracy', 'Jack']
tuple
和list
的区别就是tuple
不可变切片之后仍然是tuple
。另外,字符串也可以看成是一种list
,每个字符就是一个元素,切片之后是字符串
迭代(Iteration)
Python的迭代通过for...in...
完成的,list
可以直接使用来遍历元素,dirt
同样可以使用迭代操作
d = {"aa": 1, "bb": 2, "cc": 3}
for key in d:
print(key)
上面是遍历dirt
的key,如果要遍历dirt
的value使用for value in d.values()
,如果需要同时遍历key和value,可以使用for key, value in d.items()
字符串也是可迭代类型,同样可以使用,例如:for c in 'mrtrying'
只要是可以迭代的对象,就可以使用迭代操作,通过collections
模块的Iterable
类型判断:
from collections import Iterable
b1 = isinstance('abc', Iterable) # str是否可迭代
print(b1)
b2 = isinstance([1,2,3], Iterable) # list是否可迭代
print(b2)
b3 = isinstance(123, Iterable) # 整数是否可迭代
print(b3)
在Python中可能出现需要list
的index
同时需要元素的情况,为此提供了enumerate
方法,来同时迭代list
的index
和对应元素
l = list(range(100, 110))
for i, value in enumerate(l):
print(i, value)