python自学(五)——高级特性

一、切片

形式:列表[start::end]

	start // 可以省略,缺省时默认从0开始,可以为负值,负值从右侧开始//不能省略
	: //可以省略,存在时end的意义表示为间隔长度 
	end //可以省略,缺省表示到选取方向的末尾,可以为负号,表示右侧数第几个,如果和start同为负数,切end小于等于start,则返回空

l = (1,2,3,4,5,6,6,7,7,8,8,9)
l[3:9]
(4, 5, 6, 6, 7, 7)
l[3:-3]
(4, 5, 6, 6, 7, 7)
l[-3:-3]
()

作业实现,strip()的效果

#!/usr/bin/env python3
#encoding=utf-8
def trim(str):
        print(str)
        while str[0]==' ':
                str = str[1:]
                print(str)
        print(len(str),str)
        while str[len(str)-1]==' ':
                str = str[:-1]
        print(str)
二、迭代

这一节小知识点比较多

2.1 判断是否支持迭代
 1.from collections import Iterable // 引入迭代器类型
 2.isinstance(目标,Iterable) // isinstance 类似与js中的instanceOf,返回结果是布尔类型
 
 isinstance("abc",Iterable) // True
 isinstance(123,Iterable) // Fasle
2.2 dict的迭代
  1. 正常迭代,但是顺序不可控

  2. 默认迭代的keys

  3. 可以使用for item in dict.valus()

  4. 可以迭代item for item in dict.items()

    类比,set类型的数据如果迭代
    在这里插入图片描述
    作业,求max和min,返回一个tuple,默认返回就是tuple哈

    #encoding=utf-8
    def min(l=[4,5,1,66,11,5]):
        min = l[0]
        max = l[0]
        for item in l:
                if item < min:
                        min = item
                if item > max:
                        max = item
        return min,max
    
三、列表的生成式

这个应该在之前的学习中已经出现过几次了,就是快速的生成列表

语法如下

	list(range(10)) // 生成 从0开始

接下来就是见证奇妙的时候的了

[x*2 for x in range(10)] // 生成一个偶数数组,确实很简单
本质就是简化了迭代器的写法,将返回结果放到[]中

作业 过滤非字符串

#!/usr/bin/env python3
#encoding=utf-8
def list(L=['Hello', 'World', 18, 'Apple', None]):
	return [item.lower() for item in L if isinstance(item,str)]

//执行
>>> from list import list
>>> list()
['hello', 'world', 'apple']
四、生成器(generator)

生成器和上面的列表生成式,看起来很接近,只有略微的区别
(x*2 for x in ranger(10))
但是本质的原理差别不小

  1. 生成器保存的是算法的本身,不会在立刻生成需要的列表,只是在需要的时候才会真正的生成
  2. 调用的方式是next(l),但是这样有个弊端就是在列表的最后一个元素,python会抛出一个错误
  3. 所以一般是以for循环的方式进行调用
  4. 可以自己定义生成器,和不同函数的区别,generator中有关键字yeild ,当执行生成器时,到yeild时会返回,下次执行时会接着yeild继续执行。
  5. 生成器和函数的区别也表现在返回值上,函数的返回值是函数的值,生成器的返回值是一个generator对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值