Python中代码遵循越少越好的原则,代码越少开发效率越高
高级特性可以用少的代码实现一些较复杂的功能。
1.切片(slice)
该功能针对list和tuple以及字符串类型,是截取list、tuple或字符串中的一部分的一种简单操作;
对目标数据的索引指定范围的方法实现,使用python提供的操作符‘:’;
例:L[0:3],代表截取L[0],L[1],L[2];即包含第一个索引的元素,不包含最后一个索引的元素。
当索引中含有0时,0可以省略;例:L[0:2]=L[:2],L[-2:0]=L[-2:];(索引-1,代表倒数第一个元素);
当以上面两个例子书写时,可以更简便的理解为,取前两个元素,取后两个元素;
当仅有操作符':'时,代表取所有元素;
当有两个操作符时,第二个后面的数代表,再次取值的间隔;例L[:10:2],前十个数,每两个取一个(5个)。
注意:切片的操作不会改变数据的类型。
2.迭代(iterable)
python中通过for...in循环遍历list或tuple,这种遍历我们就称为迭代类型;
但是python中可用for循环进行迭代的对象却很多,
可以通过collections模块的Iterable类型来判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代(isinstance是判断类型的函数)
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
dict数据类型也是可以迭代的,默认迭代的是其key,如果要迭value可以使用:for value in d.values(),同时迭代key和value,可以使用for k,v in d.items()。
迭代list实现索引与元素的形式,可以使用python内置的enumerate函数:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
注意:任何可迭代的对象都可以使用for循环进行迭代,无序的数据迭代出的数据也是无序的(例如dict数据类型)