1. 筛选list中符合要求的数据
# 生成数据
import random
data = [random.randint(-10, 10) for _ in range(10)]
1.1 常规迭代法
'''
常规迭代
'''
print(data)
# [-9, -2, -4, 1, 5, -3, -5, -1, -8, 2]
filter_data = []
for x in data:
if x >=0:
filter_data.append(x)
print(filter_data)
# [1, 5, 2]
列表生成式:即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
# 写列表生成式时,把要生成的元素random.randint(-10, 10)放在前面,后面跟for循环
[random.randint(-10, 10) for _ in range(10)]
# for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数x的平方
[x*x for x in range(10) if x % 2 ==0]
1.2 列表解析法
'''
使用列表解析
'''
print(data)
# [-8, 8, 4, 1, -8, -1, -5, 2, 3, 8]
filter_data = [x for x in data if x >= 0]
print(filter_data)
# [8, 4, 1, 2, 3, 8]
列表解析:
根据已有列表,高效创建新列表的方式。
列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表。
# 仅有if时
[x for x in data if x >= 0] # [9, 10, 4]
# 有else时
[x if x >= 0 else 0 for x in data ] # [0, 0, 9, 0, 10, 10, 0, 0, 0, 4]
1.3 filter()函数
''''
使用python内建的filter()函数过滤序列
'''
print(data)
# [-3, 6, 5, -1, 7, -5, -4, -7, -2, -10]
filter_data = filter(lambda x: x >= 0, data)
print(list(filter_data))
# [6, 5, 7]
2.筛选字典中符合要求的数据
'''
字典解析
'''
import random
data = {x: random.randint(60, 100) for x in range(1, 21)} # 生成21个学生的随机成绩60~100
filter_data = {k: v for k, v in data.items() if v > 90}
3.筛选集合中符合要求的数据
'''
集合解析
'''
import random
data = set([random.randint(-10, 10) for _ in range(10)])
filter_data = {x for x in data if x >= 0}