生成器可以用普通函数实现
yield语句实现:协同程序
举例:
def myGen():
print()
yield 1
#yield非常类似return语句,只不过return退出函数,所有函数内的历史变量都消失,下次重新执行。
#而yield暂停执行到这里,下次接着下一条语句继续执行。
yiels 2
使用举例:
第三次next出错,因为没有元素了,会抛出StopIteration错误
生成器是一种特殊的迭代器,只不过可以用简单函数实现
def fibs();
a=0
b=1
while True:
a,b=b,a+b
yield a
for each in fibs():
if each>100:
print(each)
构建列表推导式:
a=[i for i in range(100) if not (i%2) and i%3]
字典推导式:
b= {i:i%2==0 for i in range(10)}
集合推导式:
c={i for i in [1,2,2,3,3,3,3,4,5,6,6,7,3,7,7,7]}
没有字符串推导式
对于元组:
e=(i for i in range(10))
发现是一个生成器推导式
深入解释yield和Generators
深入解释yield和Generators - py小蟒蛇 - 博客园
python字典排序方法
sorted(iterable, key=None,reverse=False)
第一种:最常见的单个字典格式数据排序
# 字典排序
a = {'a': 3, 'c': 89, 'b': 0, 'd': 34}
# 按照字典的值进行排序
a1 = sorted(a.items(), key=lambda x: x[1])
# 按照字典的键进行排序
a2 = sorted(a.items(), key=lambda x: x[0])
print('按值排序后结果', a1)
print('按键排序后结果', a2)
print('结果转为字典格式', dict(a1))
print('结果转为字典格式', dict(a2))
第二种:字典列表排序
b = [{'name': 'lee', 'age': 23}, {'name': 'lam', 'age': 12}, {'name': 'lam', 'age': 18}]
b1 = sorted(b, key=lambda x: x['name'])
b2 = sorted(b, key=lambda x: x['age'], reverse=True)
b3 = sorted(b, key=lambda x: (x['name'], -x['age']))
print('按name排序结果:', b1)
print('按age排序结果:', b2)
print('name相同按age降序排列:', b3)