生成器 推导式 练习

2.用列表推导式做下列小题

过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

lst = ["1","2","3","4","8","weeff","bdskjk","nsdjj"]

print([i.upper() for i in lst if len(i) > 3])

求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

print([(x,y) for x in range(5) if x % 2 == 0 and ( for y in range(5) if y % 2 == 1) ])

求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

M = [[1,2,3],[4,5,6],[7,8,9]]

print([[i[-1]] for i in M ])

求出50以内能被3整除的数的平方,并放入到一个列表中。

print([i*2 for i in range(50) if i % 3 == 0])

构建一个列表lst = [‘python1期‘, ‘python2期‘, ‘python3期‘, ‘python4期‘, ‘python6期‘, ‘python7期‘, ‘python8期‘, ‘python9期‘, ‘python10期‘]

print([f"python{i+1}期" for i in range(10) if i != 4])

构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]

print([(i, i+1) for i in range(6)])

构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

print([i for i in range(0,20,2)])

有一个列表l1 = [‘alex‘, ‘WuSir‘, ‘老男孩‘, ‘太白‘]将其构造成这种列表[‘alex0‘, ‘WuSir1‘, ‘老男孩2‘, ‘太白3‘]

l1 = [‘alex‘, ‘WuSir‘, ‘老男孩‘, ‘太白‘] #将其构造成这种列表[‘alex0‘, ‘WuSir1‘, ‘老男孩2‘, ‘太白3‘]

print([f"{l1[i]}{i}" for i in range(len(l1))])

3.有以下数据类型:

x = {‘name‘:‘alex‘,‘Values‘:[{‘timestamp‘:1517991992.94,‘values‘:100,},{‘timestamp‘: 1517992000.94,‘values‘: 200,},

{‘timestamp‘: 1517992014.94,‘values‘: 300,},{‘timestamp‘: 1517992744.94,‘values‘: 350},{‘timestamp‘: 1517992800.94,‘values‘: 280}],}

# 将上面的数据通过列表推导式转换成下面的类型:

# [[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]

lst = []

a = ([lst.append([x[‘Values‘][i][‘timestamp‘],x[‘Values‘][i][‘values‘]]) for i in range(5)])

print(lst)

4.构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。

colors = [‘black‘, ‘white‘]

sizes = [‘S‘, ‘M‘, ‘L‘]

print([(x,y) for x in colors for y in sizes])

构建一个列表,列表里面的元素是扑克牌除去大小王以后,所有的牌类(列表里面的元素为元组类型)。

l1 = [(‘A‘,‘spades‘),(‘A‘,‘diamonds‘), (‘A‘,‘clubs‘), (‘A‘,‘hearts‘)......(‘K‘,‘spades‘),(‘K‘,‘diamonds‘), (‘K‘,‘clubs‘), (‘K‘,‘hearts‘) ]

l2 = [‘A‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6,‘‘7‘,‘8‘,‘9‘,‘10‘,‘J‘,‘Q‘,‘K‘]

l3 = ["spades","diamonds","clubs","hearts"]

print([(x,y) for x in l2 for y in l3 ])

6.简述一下yield 与yield from的区别。

yield 单个返回,能够循环多次

yield from 将一个可迭代对象元素逐个返回

v = [i % 2 for i in range(10)]
print(v)
v = (i % 2 for i in range(10))
print(v) #生成器地址
for i in range(5):
print(i)
print()

0
1
2
3
4
4

print(i)

原文地址:https://www.cnblogs.com/hualibokeyuan/p/11217100.html

时间: 2024-11-01 18:19:04

生成器 推导式 练习的相关文章

4-4日 列表推导式,生成器推导式

1,列表推导式就是在列表中进行for 循环if语句判断,最多两个for,一个if判断 #求1到30 被3整除的数的平方 li = [i*i for i in range(1,31)if i%3 == 0] print(li) li = [i for i in range(1,101)if i%2 == 0] l2 = [i for i in range(1,101)if i%2 == 1] print(li) print(l2) #求列表中带两个'e'名字 names = [['Tom', 'B

(一)Python入门-4控制语句:10推导式创建序列-列表推导式-字典推导式-集合推导式-生成器推导式

推导式创建序列: 推导式是从一个或者多个迭代器快速创建序列的一种方法.它可以将循环和条件判断结合, 从而避免冗长的代码.推导式是典型的Python 风格,会使用它代表你已经超过Python初 学者的水平. 一:列表推导式 列表推导式生成列表对象,语法如下: [表达式 for item in 可迭代对象 ] 或者:{表达式 for item in 可迭代对象 if 条件判断} 1 #列表推导式 2 x = [x for x in range(1,5)] 3 print(x) 4 5 x = [x*

python 第十二章 生成器+推导式+内置函数一(不常用的)

生成器 # 迭代器:python中内置的一种节省空间的工具 # 生成器的本质就是一个迭代器 # 区别:迭代器自带的,生成器自己写的 # return可以写多个,但是只执行一次 # yield会记录执行位置 # 一个next()对应一个yield def func(): print(123) return "you" print(func()) # 123 # you # return和yield 都是返回值 # 在函数体内将return改成yield的就是一个生成器 def func(

part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)

循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部分.(1).初始化语句(init_statements):在循环开始前执行,有一条或多条语句,用于完成一些起初始化工作.(2).循环条件(test_expression):一个布尔表达式,决定是否执行循环体.(3).循环体(body_statements):循环的主体,根据循环条件是否允许,这个代码

Python——生成器&推导式

生成器 生成器的本质就是迭代器,那么还为什么有生成器呢,两者唯一的不同就是迭代器都是Python给你提供能够的已经写好的工具或者通过数据转化得来的.而生成器是需要我们自己用Python代码构建的工具. 生成器的构建方式: 在python中有两种方式来创建生成器: 通过生成器函数 通过生成器推导式 生成器函数: 首先我们来一个简单的函数结构: def func(): print('111') return 222 result = func() print(result) 没得问题,那么在看看生成

生成器; 推导式

一, 生成器 1,生成器的本质就是迭代器 2,生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(), send(): 给上一个yield传值). 3,生成器一般由生成器函数或者生成器表达式来创建 4,其实就是手写的迭代器 #只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码 def func(): print('====>first') yield 1 print('====>second') yield 2 print('====

python之路---12 生成器 推导式

三十.函数进阶 1.生成器    函数中有yield 的就是生成器函数(替代了return) 本质就是迭代器   一个一个的创建对象     节省内存 ①创建生成器       最后以yield结束 1. 通过?成器函数   2. 通过各种推导式来实现?成器 3. 通过数据的转换也可以获取?成器 ②send用法 send 和 __next__都是下一个的意思 但send可以给上一个yield 位置传值   不能给最后?个yield发送值. 在第?次执?? 成器代码的时候不能使?send() ③y

python迭代器,生成器,推导式

可迭代对象 字面意思分析:可以重复的迭代的实实在在的东西. list,dict(keys(),values(),items()),tuple,str,set,range, 文件句柄(待定) 专业角度: 内部含有'__iter__'方法的对象,就是可迭代对象. 内置函数:dir() print(dir(str)) 判断一个对象是否是可迭代对象: print('iter' in dir(str)) 优点: 直观. 操作方法较多. 缺点: 占内存. 不能迭代取值(索引,字典的key). 迭代器 字面意

Python3基础 生成器推导式 简单示例

? ???????Python : 3.7.0 ?????????OS : Ubuntu 18.04.1 LTS ????????IDE : PyCharm 2018.2.4 ??????Conda : 4.5.11 ???typesetting : Markdown ? code """ @Author : 行初心 @Date : 18-9-24 @Blog : www.cnblogs.com/xingchuxin @Gitee : gitee.com/zhichengji