首页 > 其他 > 详细

生成器推导公式练习

时间:2019-07-19 21:35:43      阅读:134      评论:0      收藏:0      [点我收藏+]

2.用列表推导式做下列小题
过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
求出50以内能被3整除的数的平方,并放入到一个列表中。
构建一个列表:[‘python1期‘, ‘python2期‘, ‘python3期‘, ‘python4期‘, ‘python6期‘, ‘python7期‘, ‘python8期‘, ‘python9期‘, ‘python10期‘]
构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
有一个列表l1 = [‘alex‘, ‘WuSir‘, ‘老男孩‘, ‘太白‘]将其构造成这种列表[‘alex0‘, ‘WuSir1‘, ‘老男孩2‘, ‘太白3‘]

# 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
'''
lst = ["dsadsa","dsafa","fd","fdsfdsfa"]
lst1 = [i.upper() for i in lst if len(i)>=3]
print(lst1)
'''
# 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
'''
lst = [(i,j) for i in range(0,5,2) for j in range(1,6,2) ]
print(lst)
'''
# 求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
'''
M = [[1,2,3],[4,5,6],[7,8,9]]
lst = [j for i in M  for j in i if j % 3 ==0]
print(lst)
'''
# 求出50以内能被3整除的数的平方,并放入到一个列表中。
'''
lst = [i*i for i in range(51) if i % 3 == 0]
print(lst)
'''
# 构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']
'''
lst = [f"python{i}期" for i in range(1,11) if i != 5]
print(lst)
'''
# 构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
'''
lst = [(i,i+1)for i in range(6)]
print(lst)
'''
# 构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
'''
lst = [i for i in range(20) if i % 2 == 0]
print(lst)
'''
# 有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']
'''
l1 = ['alex', 'WuSir', '老男孩', '太白']
l1 = [i+str(l1.index(i)) for i in l1]
print(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]]

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}
],}
ls = []
lst = [[j for j in i.values()] for i in x["Values"] ]
print(lst)

4.构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。
colors = [‘black‘, ‘white‘]
sizes = [‘S‘, ‘M‘, ‘L‘]

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
lst = [(i,j )for i in sizes for j in colors]
print(lst)

5.构建一个列表,列表里面的元素是扑克牌除去大小王以后,所有的牌类(列表里面的元素为元组类型)。
l1 = [(‘A‘,‘spades‘),(‘A‘,‘diamonds‘), (‘A‘,‘clubs‘), (‘A‘,‘hearts‘)......(‘K‘,‘spades‘),(‘K‘,‘diamonds‘), (‘K‘,‘clubs‘), (‘K‘,‘hearts‘) ]

ls = ['spades','diamonds','clubs','hearts']
ls1 = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
li = [(i,j) for i in ls1 for j in ls]
print(li)

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

# yield 返回的就是当前元素
# yield from  相当于for循环   后面加可迭代对象 用来循环返回可迭代对象的元素

7.看代码求结果(面试题):
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(i)
# [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
# 生成器地址  <generator object <genexpr> at 0x00000191D86E3C50>
# 0 1 2 3 4 4

生成器推导公式练习

原文:https://www.cnblogs.com/ciquankun/p/11215783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!