Python基础-切片与迭代

在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 Iterable

print(isinstance([1,2,4], Iterable))
print(isinstance('abc', Iterable))
#打印结果
True
True

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

for x,y in [[1,2],[3,4],[5,6]]:
    print(x,y)
#打印结果
1 2
3 4
5 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值