博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
notes on python
阅读量:6813 次
发布时间:2019-06-26

本文共 1910 字,大约阅读时间需要 6 分钟。

hot3.png

iterator

Behind the scenes, the for statement calls iter() on the container object. The function returns an iterator object that defines the method __next__() which accesses elements in the container one at a time. When there are no more elements, __next__() raises a StopIteration exception which tells the for loop to terminate.You can call the __next__() method using the next() built-in function

可以自己实现一个类的for loop:

class A:	class it:		def __init__(s,a):			s.a=a			s.l=len(s.a.l)+len(s.a.l2)			s.i=0		def __next__(s):			if s.i==s.l:				raise StopIteration			a=0			if s.i
>> a=A()>>> [i for i in a][1, 2, 4, 5, 4, 3, 2, 0]

generator

s are a simple and powerful tool for creating iterators. They are written like regular functions but use the statement whenever they want to return data. Each time is called on it, the generator resumes where it left off (it remembers all the data values and which statement was last executed).

def gen(a):	for i in a.l:		yield i	for i in a.l2:		yield i>>>for i in gen(a):	print (i,end=',')1,2,4,5,4,3,2,0,

generator expression

def gen():	return ((i,j)for i in range(10)for j in range(9))或:for a in((i,j)for i in range(10)for j in range(9)):	print (a)

for a in (...generator exp...)是在每次call next()时才生成a,而for a in [...list comprehension...]是提前就生成一个列表,据说前者效率更高

class and instance variables

我的理解,对于mutable变量,对象复制类的变量的一个“指针“:

>>> class A:	li=[]	def add(s,x):		s.li.append(x)		>>> a=A()>>> a.add(3)>>> a.li[3]>>> b=A()>>> b.add(4)>>> b.li#b.li像是A.li的一个引用,已经被a.li修改过[3, 4]
正确的做法:
>>> class A:	def __init__(s):		s.li=[]#每次创建对象都生成一个对象自己的列表	def add(s,x):		s.li.append(x)		>>> a=A()>>> a.add(3)>>> a.li[3]>>> b=A()>>> b.add(4)>>> b.li[4]

而对于immutable 变量则类似于按值传递(尽管python中没有这些概念),不会有这个问题

函数嵌套

>>> def fun_gen(c):...     def fun(x):...             return x+c...     return fun... >>> f=fun_gen(4)>>> f(5)9>>> fun_gen(5)(8)13

转载于:https://my.oschina.net/soitravel/blog/358335

你可能感兴趣的文章
VBA7种遍历方法
查看>>
python编码问题
查看>>
SDOI2015 序列统计
查看>>
获取第几周
查看>>
VS2010 配置PCL1.6.0AII in one 无法启动程序ALL_BUILD
查看>>
用python写MapReduce函数——以WordCount为例
查看>>
【好文翻译】10个免费的压力测试工具(Web)
查看>>
mysql 新建用户并赋予远程访问权限
查看>>
AX2012 R3 Data upgrade checklist sync database step, failed to create a session;
查看>>
初次使用Eclipse,坑一二
查看>>
[c++] polymorphism without virtual function
查看>>
Effective_STL 学习笔记(十六) 如何将 vector 和 string 的数据传给遗留的API
查看>>
android定位问题
查看>>
hdu-1242 dfs+各种剪枝
查看>>
Sql Server 分区之后增加新的分区
查看>>
C语言基础第三次作业
查看>>
ML | Naive Bayes
查看>>
javascript:正则表达式、一个表单验证的例子
查看>>
第一个Maven工程的目录结构和文件内容及联网问题
查看>>
js移动端 可移动滑块
查看>>