1.推导式
li = [1, 5, -7, 6, -9, 3, -4]
print([n for n in li if n > 0])
# 结果为[1, 5, 6, 3]
2.如果序列非常大,上述方法会占用大量内存,对内存敏感的可以使用生成器,然后依次取值
li = [1, 5, -7, 6, -9, 3, -4]
li2 = (n for n in li if n > 0)
for n in li2:
print(n)
3.如果碰到过滤条件比较复杂,用推导式无法完成,可以使用filter()函数
values = ['1', '2', '-3', '-', '4', 'N/A', '5']
def is_int(val):
try:
x = int(val)
return True
except ValueError:
return False
ivals = list(filter(is_int, values))
print(ivals)
#结果 ['1', '2', '-3', '4', '5']