python(数据筛选)

在Python3中:
(1)xrange的功能合并到range里面,xrange已经不存在 -> range和xrange用法
(2)filter已经不能返回一个list,而是只能返回一个迭代对象,需要套在一个list()里面,且,需要注意的是,filter过滤后,对原list并不产生影响
(3)字典的iteritems() 更改为 items()


列表:

from random import randint
import timeit
# 在列表中根据条件筛选数据


# e.g.01 -> filter,效率比原始迭代要好
# 需要解释的是:range(1,10) ->  生成的是:0-9
data = [randint(-10, 10) for _ in range(10)]
data2 = list(filter(lambda x: x >= 0, data))


# e.g.02 -> 列表解析,效率最高
data3 = [x for x in data if x >= 0]


# e.g.03 -> 最原始迭代方法,效率最差
res = []
for x in data:
    if x >= 0:
        res.append(x)
print(res)


# 时间对比
t1 = timeit.timeit("list(filter(lambda x: x >= 0, %s))" % data, number=10)
t2 = timeit.timeit("[x for x in %s if x >= 0]" % data, number=10)
print(t1, t2, sep="*"*20)

小技巧::for _ in range(10): 意思就是单纯的循环10次,变量参数什么的不用考虑


字典和集合

# --------------------------------字典解析-----------------------------------------------#

d = {x: randint(60, 100) for x in range(1, 21)}

d1 = {k: v for k, v in d.items() if v > 90}

print(d, d1, sep="=============\n")


# --------------------------------集合解析-----------------------------------------------#
print(data)
s = set(data)
s1 = {x for x in s if x % 3 == 0}
print(s1)

你可能感兴趣的:(python(数据筛选))