Python推导式练习题

推导式_练习题:

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)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值