一道面试题的推导

一、题面:请使用一行代码将下面列表展开,并只保留偶数,输出结果[2,4,6]: 

a=[[2,3],[5,4],6]#注:最后一个元素是整数6,不是列表[6]

二、解答

a = [[2, 3], [5, 4], 6]
b = [i for j in a if (type(j) == list) for i in j if (i % 2 == 0)] + [k for k in a if (type(k) == int and k % 2 == 0)]
print(b)

三、要点

使用列表推导式进行求解,原则如下:

1.列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.

2.如果有if条件语句,for遍历后紧跟着进行条件判断.

3.如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.

4.可以进行嵌套的列表推导,与嵌套for循环的原理相同

参考知乎文章:[小白也能看懂]Python列表推导式 - 知乎 (zhihu.com)

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值