码迷,mamicode.com
首页 > 编程语言 > 详细

初学python第十四天的随堂笔记

时间:2018-01-03 21:04:08      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:next   大小写   合并   mes   send   注意   括号   post   表达式   

从生成器中取值的方法

  next

  for循环

  数据类型的强制转换 缺点:占内存

生成器函数的进阶

send的使用效果

def generator():
    print(123)
    content = yield 1
    print(=====,content)
    print(456)
    yield 2

g = generator()
ret  = g.__next__()
print(***,ret)
ret = g.send(hello)
print(***,ret)

123
*** 1
===== hello
456
*** 2

  send获取下一个值的效果和next基本一致

  只是在获取下一个之的时候,给上一个之的位置传递一个数据

使用send的注意事项

  第一次使用生成器的时候,是用next获取下一个值

  最后一个yield不能接受外部的值

yield from

def gen1():
    for c in AB:
        yield c
    for i in range(3):
        yield i
print(list(gen1()))

def gen2():
    yield from AB
    yield from range(3)
print(list(gen2()))

从一个容器中取值,集体返回  可以一个一个接收

列表推导式

g = (i*i for i in range(10))
for i in g:
    print(i)

效果是打印出十以内的每个数的平方

names = [[Tom, Billy, Jefferson, Andrew, Wesley, Steven, Joe],
         [Alice, Jill, Ana, Wendy, Jennifer, Sherry, Eva]]
print([name for lst in names for name in lst if name.count(e) >= 2])

[‘Jefferson‘, ‘Wesley‘, ‘Steven‘, ‘Jennifer‘]

找到嵌套列表中名字含有两个‘e’的所有名字

生成器表达式

g = [i*i for i in range(30) if i%3==0]
print(g)

在列表中打印出能整除三的数的平方

 列表推导式和生成器表达式的区别

  括号不一样

  返回的值不一样===几乎不占用内存

各种推导式:生成器  列表   字典   集合

字典

合并大小写对应的value值,将k统一成小写

mcase = {a:10,b:34,A:7,Z:3}
mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0) for k in mcase.keys()}
print(mcase_frequency)

{‘a‘: 17, ‘z‘: 3, ‘b‘: 34}

将一个字典的key和value对调

mcase = {a:10,b:34,A:7,Z:3}
mcase_frequency = {mcase[k]: k for k in mcase}
print(mcase_frequency)

{10: ‘a‘, 3: ‘Z‘, 34: ‘b‘, 7: ‘A‘}

集合

计算列表中每个值的平方,自带去重功能

squared = {x**2 for x in [1,-1,2]}
print(squared)

{1, 4}

  它们都有遍历操作和筛选操作

初学python第十四天的随堂笔记

标签:next   大小写   合并   mes   send   注意   括号   post   表达式   

原文地址:https://www.cnblogs.com/GrandDarkness/p/8185340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!