Python 基础与笔记(2)

来源:互联网 发布:telnet远程端口 编辑:程序博客网 时间:2024/06/05 10:35

1、list与tuple的切片操作:

list[:5]或list[0:5]表示第0,1,2,3,4个索引值;

负,list[-2:0]等于list[-2:]即倒数第2、倒数第1个数;

跳:list[1:10:2],表示步长为2的。

2、迭代操作

对于list、tuple还有字符串都可以用 for…in 进行迭代,而对于dictionary的话,也可以哦,只不过默认情况下,dict迭代的是key。

迭代value,用  for value in d.itervalues()

同时迭代key和value,用  for k, v in d.iteritems()

3、列表生成式:很方便

生成1-10的list:

>>> range(1,11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

生成 12、22、……102的list:

>>> list = [x*x for x in range(1,11)]>>> list[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还可以再选择一下:

>>> [x * x for x in range(1, 11)if x % 2 == 0][4, 16, 36, 64, 100]

还可以两层循环的:

>>> [m + n for m in 'ABC' for n in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

 4、生成器:

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

创建方法1:第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x104feab40>

可以通过generator的.next()方法打印出来数据,另外也可以通过迭代哦,基本上我们都选择for…in迭代方法。

 

创建方法2:通过特殊函数创建:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。

复制代码
#这是函数,输出斐波那契数列def fib(max):    n, a, b = 0, 0, 1    while n < max:        print b        a, b = b, a + b        n = n + 1#这是generator,也是生成斐波那契数列;def fib(max):    n, a, b = 0, 0, 1    while n < max:        yield b        a, b = b, a + b        n = n + 1
复制代码

 

注意:这里,最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。

复制代码
>>> def odd():...     print 'step 1'...     yield 1...     print 'step 2'...     yield 3...     print 'step 3'...     yield 5...>>> o = odd()>>> o.next()step 11>>> o.next()step 23>>> o.next()step 35>>> o.next()Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration
复制代码

 


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 铝塑板图片 铝塑板门头 铝塑管ppr 铝塑复合管 铝塑线 铝塑包装 3mm铝塑板 铝塑包装袋 铝塑管剪刀 铝塑板价格表 铝塑板装修效果图 铝单板铝塑板 铝塑板规格及价格表 铝塑板分离设备 铝塑板生产厂家 铝塑板门头多少钱一平方 4分铝塑管多少钱一米 铝塑板防火吗 铝塑门窗厂家 仿大理石铝塑板图片 铝塑管价格多少钱一米 上海吉祥铝塑板价格表 日丰铝塑管价格 铝壳电机厂家 铝壳 方形铝壳电机 超薄铝壳电阻 电机铝壳加热器 铝壳电阻器 黄金铝壳电阻 电池铝壳 铝套期保值 全铝门多少钱一套 钢丝绳铝套 铝套 铝屑回收实时价格 铝屑回收 铝屑 铝方通规格 铝卷厂家 铝管厂家