函数--生成器、生成器函数、各类推导式、生成器表达式(相关练习)
1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
lst = ["alex", "吴彦祖", "sb", "刘德华", "sb", "大司马", "冯提莫"] result = [el.upper() for el in lst if len(el)>=3] print(result)
2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
result = [(x, y) for x in range(6) for y in range(6) if x % 2== 0 and y % 2 == 1] print(result)
3)求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
lst = [3, 6, 9] result = [[n-2, n-1, n] for n in lst] print(result)
4)求出50以内能被3整除的数的平方,并放入到一个列表中。
print([i**2 for i in range(50) if i % 3 == 0])
5)构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
print([ (n, n + 1) for n in range(6) ])
6)构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print([n for n in range(19) if n % 2 == 0])
7)有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']
print([ l1[i] + str(i) for i in range(len(l1))])
8)有以下数据类型:
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]]
print([ list(el.values()) for el in x['Values']])
9)一个面试题. 难度系数500000000颗星:考点为(惰性机制,只能向前,不能反复)
def add(a, b): return a + b def test(): for r_i in range(4): yield r_i g = test() for n in [2, 10]: g = (add(n, i) for i in g) print(list(g))
输出结果为:
[20, 21, 22, 23]