一、题面:请使用一行代码将下面列表展开,并只保留偶数,输出结果[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循环的原理相同