推导式_练习题:
1.应用列表推导式,构建一个列表
(1)[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
res = [2 * i for i in range(10)]
print(res)
(2)[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
res = [(i, i+1) for i in range(6) ]
print(res)
(3)产生一个公差为11的等差数列
res = [11*i + 1 for i in range(10)]
print(res)
2.求出50以内能被3整除的数的平方,并放入到一个列表中。
res = [i for i in range(0, 51) if i % 3 == 0]
print(res)
3.x是0-5之间的偶数,y是0-5之间的奇数,把x,y作为一个元组,放到列表当中
res = [(i,j) for i in range(0, 6) if i % 2 == 0 for j in range(0, 6) if j % 2 == 1]
print(res)
4.构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。
colors = [‘black’, ‘white’]
sizes = [‘S’, ‘M’, ‘L’]
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
clothes = [(size, color) for color in colors for size in sizes ]
print(clothes)
5.定义一个列表推导式,把字典{‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ } 输出为:[‘x=A’,‘y=B’,‘z=C’]的形式
dic = {'x': 'A', 'y': 'B', 'z': 'C' }
res = [f"{key}={value}" for key,value in dic.items()]
print(res)
6.把列表中所有字符变成小写 [“ADDD”,“dddDD”,“DDaa”,“sss”]
lt = ["ADDD","dddDD","DDaa","sss"]
res = [l.lower() for l in lt]
print(res)
7.编写一个函数,交换指定字典的key和value。(提示:使用字典推导式)
dic = {"信息服务": 1, "信息检索": 2, "信息组织": 3}
def change(item):
return (item[1], item[0])
res = [change(item) for item in dic.items()]
print(dict(res))
8.应用列表推导式,去除列表中成绩小于70的字典 :
dict_list = [{“科目”:“政治”, “成绩”:98}, {“科目”:“语文”, “成绩”:77}, {“科目”:“数学”, “成绩”:99}, {“科目”:“历史”, “成绩”:65}]
dict_list = [{"科目": "政治", "成绩": 98}, {"科目": "语文", "成绩": 77}, {"科目": "数学", "成绩": 99}, {"科目": "历史", "成绩": 65}]
res = [d for d in dict_list if d['成绩'] >= 70]
print(res)
9.构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。例如:
colors = [‘black’, ‘white’]
sizes = [‘S’, ‘M’, ‘L’]
生成的结果形式为:[(‘S’,‘black’),(‘S’,‘white’)]
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
res = [(s, c) for s in sizes for c in colors]
print(res)
10.列表为L=[[1,2,3],[4,5,6],[7,8,9]]
需求1:输出[1,4,7]
需求2:输出[1,5,9]
L=[[1,2,3],[4,5,6],[7,8,9]]
#需求1
res1 = [l[0] for l in L]
print(res1)
#需求2
res2 = [l[index] for index,l in enumerate(L)]
print(res2)
11.有以下数据类型:
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}],}
res = [(i['timestamp'], i['values']) for i in x['Values']]
print(res)
12.求M,N中矩阵和元素的乘积
M = [ [1,2,3],
[4,5,6],
[7,8,9] ]N = [ [2,2,2],
[3,3,3],
[4,4,4] ]
实现效果1: [2, 4, 6, 12, 15, 18, 28, 32, 36]
实现效果2: [[2, 4, 6], [12, 15, 18], [28, 32, 36]]
M = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
N = [[2, 2, 2],
[3, 3, 3],
[4, 4, 4]]
# 实现效果1:
res1 = [M[i][j] * N[i][j] for i in range(3) for j in range(3)]
print(res1)
# 实现效果2:
res2 = [[M[i][j] * N[i][j] for j in range(3)] for i in range(3)]
print(res2)