函数--生成器、生成器函数、各类推导式、生成器表达式(相关练习)

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]

 

 

 

posted @ 2018-12-12 15:30  Tank-Li  阅读(158)  评论(0编辑  收藏  举报