列表
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
from random import randint
data = [randint(-10, 10) for _ in range(10)]
data
[-2, 1, 10, -6, -3, 9, -1, 8, 0, -1]print(filter(lambda x: x>= 0 , data))
<filter object at 0x00000152FBB4D208>[x for x in data if x>= 0] # 更高效。在列表中筛选出非负数
[1, 10, 9, 8, 0]
字典
d ={x: randint(60,100) for x in range(1, 21)}
d
{1: 92, 2: 61, 3: 95, 4: 90, 5: 76, 6: 79, 7: 73, 8: 93, 9: 94, 10: 70, 11: 74, 12: 83, 13: 87, 14: 80, 15: 99, 16: 62, 17: 100, 18: 84, 19: 61, 20: 70}{k: v for k, v in d.items() if v > 90} # 在字典中筛选出大于90的值。items():将字典中的所有项,以列表方式返回
{1: 92, 3: 95, 8: 93, 9: 94, 15: 99, 17: 100}
集合
data
[-2, 1, 10, -6, -3, 9, -1, 8, 0, -1]s = set(data) # 将data转变为集合
s
{0, 1, 8, 9, 10, -1, -6, -3, -2}{ x for x in s if x % 3 == 0} # 在集合中筛选出能被3整除的数
{0, 9, -6, -3}