python 高级特性

切片:

切片用于截取list或者tuple,在java中,我们要取一个list的前几个或者倒数第几个起的所有元素,常用的方法便是直接使用for循环从符合条件的索引起开始取元素,在python中提供的切片可以很方便的实现对list或者tuple的截取
L[startIndex : endIndex]
表示从L列表中取出索引为startIndex到endIndex-1 的所有元素,比如L['0', '1', '2', '3', '4', '5'],  L[0 : 3]  取出来的结果为[‘0’, ‘1’,‘2’],取出了索引为0到2的所有元素
如果startIndex为空,则表示从索引为0开始取,如果endIndex为空,则表示取出从startIndex起的所有元素,如果startIndex和endIndex都为空,则得到list的所有元素
同时,startIndex和endIndex可为负数,负数则表示倒数,L[-2 : -1]取出来的元素为[‘4’];L[-2:]取出的值为[ ‘4’, ‘5’]
L[startIndex : endIndex : interval] 
在startIndex和endIndex所有元素中,每interval个元素取出一个L[0 : 4 : 2]取出的值为['0', '2']

迭代:

在java中,对于list要逐一取出其中的每个元素时,可以用迭代逐渐遍历整个list,python对于迭代的抽象程度要高于java,python中除了list或者tuple,还可以作用于其他的迭代对象,例如字符串;要判断一个对象是否属于可迭代对象可采用
isinstance('abc', Iterable)
的语句进行判断。

列表生成式:

在java中要生成一个列表首先需要new 一个list对象,然后逐一的把元素一个一个添加到list中,假如需要生成一个1到100的数字的list,则需要for循环一百次。
在python中,假如要生成一个包含1到100的数字的list,则使用 list(range(1,101)),则可以生成一个包含1到100的list,假如是要一个包含1到100的自身的平方的list,则可以用
[ x*x for x in range(1,101)]
这个表示逐一取出1到100中的数字进行 x*x的操作之后存到list中去

生成器:

L = [ x for x in range(1,101)];是使用列表生成式生成一个列表,而 g = ( x for x in range(1, 101)) 则是创建一个生成器,生成器代表的是一种推算的规则,而不是生成一个列表的所有元素,可以由创建的生成器推算出一个一个元素,可以使用next(g)一个个元素取,也可以使用迭代循环取出所有符合这个生成器规则的元素

迭代器:

能作用于for循环的数据类型由:

一类是集合数据类型,如listtupledictsetstr等;

一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

Iterable对象可以通过iter()函数得到对应的iterator对象,Iterator是惰性的,只有在需要的时候才会计算下一个元素。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值