import math
mylist = [1, 4, -5, 10, -7, 2, 3, -1]
#列表推导式 缺陷:数据量大的时候占用内存比较大
filter_list=[n for n in mylist if n>0]
print(filter_list)
#方法2,使用生成器表达式
pos=(n for n in mylist if n>0)
for x in pos:
print(x)
#方法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))
#将不符合要求的值替换
mylist = [1, 4, -5, 10, -7, 2, 3, -1]
clip_neg=[n if n>0 else 0 for n in mylist]
#过滤数据的同时进行数据转换
sqrt_list=[math.sqrt(n) for n in mylist if n>0]
print(sqrt_list)
# itertools.compress(), 它以一个 iterable 对象和一个相对应的 Boolean
# 选择器序列作为输入参数。 然后输出 iterable 对象中对应选择器为 True 的元素
addresses = [
'5412 N CLARK',
'5148 N CLARK',
'5800 E 58TH',
'2122 N CLARK',
'5645 N RAVENSWOOD',
'1060 W ADDISON',
'4801 N BROADWAY',
'1039 W GRANVILLE',
]
counts = [ 0, 3, 10, 4, 1, 7, 6, 1]
#输出count>5的地址
from itertools import compress
more5=[n>5 for n in counts] #生成Boolean选择器序列
print(compress(addresses,more5)) # 返回迭代器
print(list(compress(addresses,more5)))
python数据结果-list数据过滤
最新推荐文章于 2024-03-06 16:11:40 发布