如何在列表、字典、集合中根据条件筛选数据
在列表中筛选数据–过滤掉列表中的负数
在列表中筛选数据,我们常用的方法有三种:
迭代
from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
def func(data):
res = []
for x in data:
if x >=0:
res.append(x)
return res
print(func(data))
# 打印时间
print(timeit.timeit('func(data)', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.007226980999999997
filter函数
from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
data2 = filter(lambda x : x >= 0, data) # Pyhton2.7 返回列表,Python3.x 返回迭代器对象
print(list(data2))
# 打印时间
print(timeit.timeit('data2', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.00019520599999999985
列表解析
from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
data2 = [x for x in data if x >= 0 ]
print(data2)
# 打印时间
print(timeit.timeit('data2', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.00016285499999999994
在日常使用中优先使用列表解析
在字典中筛选数据–找到分数大于90的学生
from random import randint
data = {x: randint(60, 100) for x in range(1, 21)} # 随机生成字典数据
print(data)
data2 = {k: v for k, v in data.items() if v > 90}
print(data2)
在集合中筛选数据–找到能被3整除的数据
from random import randint
import timeit
data = set(randint(-10, 10) for _ in range(10))
print(data)
data2 = {x for x in data if x % 3 == 0}
print(data2)