python:生成器\列表、字典推导式

生成器可以用普通函数实现

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)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值