python学习之3高级特性(廖雪峰)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之3高级特性(廖雪峰)相关的知识,希望对你有一定的参考价值。
高级特性
一、切片
1、取一个list或tuple的部分元素是非常常见的操作,Python提供了切片(Slice)操作符,能大大简化这种操作。例如一个list:
L = [‘Michael‘, ‘Sarah‘, ‘Tracy‘, ‘Bob‘, ‘Jack‘]
取前三个元素: L[0:3] 。输出结果为: [‘Michael‘, ‘Sarah‘, ‘Tracy‘]
L[0:3] 表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
如果第一个索引是0
,则0可以省略,写成: L[:3] ,输出结果依然是 [‘Michael‘, ‘Sarah‘, ‘Tracy‘]
由于Python支持 L[-1] 取倒数第一个元素,那么它同样支持倒数切片,如:
>>> L[-2:] [‘Bob‘, ‘Jack‘] >>> L[-2:-1] [‘Bob‘]
创建一个0-99的数列:
>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
前10个数,每2个取1个:
>>> L[:10:2]
[0, 2, 4, 6, 8]
所有数,每5个取一个:
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
只写 [:] 就可以原样复制一个list:
>>> L[:]
[0, 1, 2, 3, ..., 99]
2、tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串‘xxx‘
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> ‘ABCDEFG‘[:3] ‘ABC‘ >>> ‘ABCDEFG‘[::2] ‘ACEG‘
二、迭代
在Python中,迭代是通过for ... in
来完成的。
1、dict的迭代
(1)默认情况下,dict迭代的是key。
d={‘a‘:1,‘b‘:2,‘c‘:3} for i in d: print(i)
输出结果是:
a
b
c
(2)要迭代value,可以用 for value in d.values() :
d={‘a‘:1,‘b‘:2,‘c‘:3} for i in d.values(): print(i)
输出结果是:
1 2 3
(3)要同时迭代key和value,可以用 for k, v in d.items() :
d={‘a‘:1,‘b‘:2,‘c‘:3} for i,j in d.items(): print(i,j)
输出结果是:
a 1 b 2 c 3
2、当我们使用for
循环时,只要作用于一个可迭代对象,for
循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。例如字符串也是可迭代对象:
for a in ‘ABC‘: print(a)
输出结果是:
A
B
C
3、如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
from collections import Iterable print(isinstance(‘abc‘, Iterable)) #字符串是否是可迭代对象
输出结果是: True
4、Python内置的 enumerate 函数可以把一个list变成索引-元素对,这样就可以在 for 循环中同时迭代索引和元素本身:
for i, value in enumerate([‘A‘, ‘B‘, ‘C‘]): print(i,value)
输出结果是:
0 A 1 B 2 C
三、列表生成式
列表生成式是python内置的简单且强大的可以用来创建list的生成式。
例如,生成 list[1,2,3,4,5,6,7,8,9,10] 可以用 list(range(1,11))
用列表生成式生成[1*1,2*2,3*3,...,10*10]:
[x*x for x in range(1,11)]
输出结果是: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
[x * x for x in range(1, 11) if x % 2 == 0]
输出结果是: [4, 16, 36, 64, 100]
以上是关于python学习之3高级特性(廖雪峰)的主要内容,如果未能解决你的问题,请参考以下文章
python高级-------python2.7教程学习廖雪峰版
python语言特性-------python2.7教程学习廖雪峰版
[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))