li=[1,2,3,False,3,4,False]

li=[i for i in li if i]中if i判断什么,原列表li=[1,2,3,false,3,4,5],后变成[1,2,3,3,4,5]

就是判断i是否为真值,每一个类型的变量都有真假值
比如数字0,空字符串“”,空列表[],假布尔值False,空对象None这些都是假值,都会被if筛掉

img

获取到原列表中if false 时,bool值false是假值
所以不会加入到新的列表里

这个你可以看成是这样的


li = [1, 2, 3, False, 3, 4, False]
li = [i for i in li if i]
print(li)

li = [1, 2, 3, False, 3, 4, False]
tempLi = []
for i in li:
    if i:
        tempLi.append(i)
print(tempLi)

结果:

[1, 2, 3, 3, 4]
[1, 2, 3, 3, 4]

布尔值也可以看成数字参与操作或者运算, 过滤时, 如果为True保留