在Python中,代码不是越多越好,而是越少越好;代码不是越复杂越好,而是逻辑越简单越好。基于这个思想,我们可以学习下Python的高级特性,它能减少代码量。Python中,代码越少,开发效率越高。
切片:
Python中取一个 list 或 tuple 中部分元素是很常见的操作,一般来讲,有两种笨方法,下面以取 list 前三个元素为例:
>>> L1=[1,2,3,4,5]
>>> [L1[0],L1[1],L1[2]]
[1,2,3]
>>> L2=[]
>>> for i in range(3):
... L2.append(L2[i])
...
>>> L2
[1,2,3]
Python中的 切片 操作符能大大简化这样的写法,示例如下:
>>> L1[0:3]
[1,2,3]
解释一下,元素从索引0开始取,取到索引3停止,但不包括索引3。即索引0、1、2,共计3个元素,得到的结果仍是 list。
如果第一个索引是0的话,还可以省略掉,方法如下:
>>> L1[:3]
[1,2,3]
同理,取 list 第二个元素和第三个元素的写法如下:
>>> L1[1:3]
[2,3]
Python中同样也支持 倒数切面,倒数切片索引值从 -1 开始 ,示例如下:
>>> L1[-2:]
[4,5]
>>> L1[-2:-1]
[4]
以第二个执行语句为例,解释一下,元素从末尾开始取值,从索引-2开始,取到索引-1,但不包括-1,所以,只取到索引-2的一个元素,共计1个元素。
切片取值很灵活,比如,L1前四个元素每两个元素取一次,写法如下:
>>> L1[:4:2]
[1,3]
L1 中,所有元素每两个元素取一次:
>>> L1[::2]
[1,3,5]
甚至,只写切片符号的话,可以直接复制一个 list :
>>> L2 = L1[:]
>>> L2
[1,2,3,4,5]
其中,tuple 也是一种 list,也可使用切片方法,但操作的结果仍是 tuple,示例如下:
>>> (1,2,3,4,5)[:3]
(1,2,3)
在 Python 中,字符串也可执行切片操作,示例如下:
>>> 'ABCDEFG'[:3]
'ABC'
友情提示,小白的我开始把切片和切面思想弄混了。。基础不扎实。。下面简单说下我自己的理解:
切片 是针对列表取值时用的,如Python中 list、tuple的取值;而切面思想大体理解是 在一个整体项目中,切开一个口,把代码放进去,让它在项目运行时运行,不影响项目的正常运行,以Java为例,常见的例子有:过滤器,监听器,拦截器等。
迭代:
一般情况下我们会用 for 循环来遍历 list 或 tuple 等,这种遍历的方式我们称为迭代。
迭代一般常用在有下表的对象上,但在没有下表的对象上也可以使用,以 dict 为例,示例如下:
>>> d = {'a':'1','b':'2','c':'3'}
>>> for key in d:
... print(key)
...
a
b
c
>>> for value in d.values():
... print(value)
...
1
2
3
>>> for key,value in d.items():
... print(key,value)
...
a 1
b 2
c 3
字符串也是可以迭代的对象,示例如下:
>>> for x in 'ABCD':
... print(x)
...
A
B
C
D
当我们使用 for 循环时,只要对象是可迭代对象,就可以对其使用 for 循环,有个方法可以判断 对象 是否是迭代对象,示例如下:
>>> from collections import Iterable
>>> isinstance('abc',Iterable)
True
>>> isinstance([1,2,3],Iterable)
True
>>> isinstance(123,Iterable)
False
如上所示,整数不可迭代。
要想打印出 list 的 下标,可以用 enumerate ,示例如下:
>>> for i,x in enumerate([1,2,3]):
... print(x)
...
0 1
1 2
2 3
上述例子中,循环定义了两个变量,这种写法在 Python 中很常见,一般可以这样写:
>>> for x,y in ([1,2],[3,4],[5.6]):
... print(x,y)
...
1 2
3 4
5 6
本篇暂时就到这里了,教材网址:https://www.liaoxuefeng.com, 继续学习~~