Python基础-切片与迭代

来源:互联网 发布:淘宝店铺套现处罚 编辑:程序博客网 时间:2024/06/09 14:02

在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。
基于这一思想,我们来介绍Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。

切片

举个例子我们需要遍历一个list或者tuple,或者取出某个或者某些元素,如下:

L = ['A', 'B', 'C', 'D']for s in L:    print(s)print(L[1], L[3])

输出就先不打印了。
其实问题也很明显,要遍历一下要写两行代码!就很烦。有没有简单方法呢?
那就是使用切片方法。

print(L[1:3])   #打印1-3位置 不包括3号print(L[:3])    #打印0-3位置 0可以默认不写print(L[-2:])   #负号表示从尾往前 -1为最后一个元素print(L[-2:-1]) # 查看打印['B', 'C']['A', 'B', 'C']['C', 'D']['C']

L[1:3]表示,从索引1开始取,直到索引3为止,但不包括索引3。即索引1,2,正好是2个元素。

接下来我们创建一个100个元素的数列来测试一下:

L = list(range(100))print(L[:10:2]) #前10个数 每2个数字取1个打印print(L[::8])   #0-100 每8个取1个print(L[:])     #默认是全部打印print([1,2,3,4,5][::3]) #这种形式也是可以的print('ABCDEFG'[2:6:2]) #从2-6号位置 每2个取1个#打印结果[0, 2, 4, 6, 8][0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96][0, 1, 2, 3 ..., 100][1, 4]CE

在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

迭代

在Python中,迭代是通过for … in来完成的。很常见
很多类型都可以迭代比如,list,tuple,dict,字符串。
但是要注意的是,默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

d = {'A':1, 'B':2, 'C':3}for s in d:             #默认迭代keys    print(s)for s in d.values():    #迭代values    print(s)#打印结果省略for s in d.items():    print(s)#迭代结果 ('A', 1)('B', 2)('C', 3)

但是怎么判断一个对象是否可以使用迭代呢,就是使用isinstance(),通过collections模块的Iterable类型判断。

from collections import Iterableprint(isinstance([1,2,4], Iterable))print(isinstance('abc', Iterable))#打印结果TrueTrue

假如对一个二维list遍历呢?

for x,y in [[1,2],[3,4],[5,6]]:    print(x,y)#打印结果1 23 45 6
原创粉丝点击