一, 切片(Slice)
(1)切片就是取一个list或tuple的部分元素的常见操作。这属于Python提供的语法特性
(2)实例1:
取前3个元素: L[0:3]
L[0:3] 表示从索引0开始去,直到索引3为止,但不包括索引3。
(3) 倒序切片
Python支持L[-1] 取倒数第一个元素,也同样支持倒序切片操作。
(4)实例2:
取后10个数:L[-10:0]
(5)实例3:
所有数,每5个去取一个:L[::5]
注释:对于切片操作在三个位置上参数钉钉意义,要清楚。
(6)实例4:
原样复制一个list: L[:]
(7) 元组的切分操作之后还是元组。
(8)对字符串的切分操作(视为list),结果还是字符串:
‘ABCDEFG’[:3]
注释:在很多编程语言里,针对字符串提供了各种截取函数,其本质就是对字符串的切片,
而Python没有针对字符串的截取函数,而是提供了切片操作。
二 , 迭代(Iteration)
(1)迭代是指对给定的一个list或tuple,通过for循环来遍历这个list或者tuple。
(2)很多编程语言的迭代是通过下标完成的,如Java:
for(i=0;i<list.length;i++){
n= list[i];
}
(3)Python的迭代以for ... in 来完成,可以作用在任何需要迭代的对象上,,不一定非得要下标,比如dict类型。
d=['a':1 ,'b':2,'c':3]
for key in d:
print(key)
默认情况下,dict的存储不是按照list的方式顺序排列,所以默认迭代的是Key。
如果要迭代value,可以用 for value in d.values()
同时迭代key和value,可以用 for k,v in d.items()
实例:
for ch in 'ABC' :
print(ch)
(4)如何判断一个对象是否为可迭代对象?
通过collections模块的Iterable类型判断
实例:
>>> from collections import Iterable
>>> isinstance('abc',Iterable)
>>> isinstance(123,Iterable)
(5) 如果有要求对list实现类似Java的下标循环,如何操作?
使用Python内置的enumerate函数把一个list变成索引---元素对,就可以在for循环中同时迭代索引和元素本身:
>>> for i ,value in enumerate(['A','B','C']):
print(i,value)
三,列表生成式
(1)列表生成式即 List Comprehensions, 是Python内置的非常简单却强大的可以用来创建list的生成式
示例:
要生成一个list : list[1,2,3,4,5,6,7,8,9,10] ,可以用list(range(1,100))
>>> list(range(1,11))
(2) 生成1*1,2*2,3*3,... ,10*10 示例:
L=[]
for x in range(1,11):
L.append(x*x)
用列表生成式代替:
[x*x for x in range(1,11)]
(3) for循环后面加上if判断,可以筛选出仅偶数的平方:
[x*x for x in range(1,11) if x%2 ==0]
(4) 列出当前目录下的所有文件和目录名:
import os
[d for d in os.listdir('.')]
(5) for循环同时使用两个甚至多个变量进行迭代:
>>> d={'x':'A','y':'B','z':'C'}
>>> for k,v in d.items():
print(k,'=',v)
使用列表生成式迭代两个变量:
>>> d={'x':'A','y':'B','z':'C'}
>>> [k+'='+v for k, v in d.items()]