【常用总结】用Python对数据结构进行个性化过滤操作

法1:列表推导式

法2:高阶函数

法3:循环遍历

# 法1:推导式 —— (过滤列表) 
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # 输出 [2, 4, 6, 8, 10]

# 法1:推导式 —— 过滤NumPy数组
import numpy as np

numbers = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
even_numbers = numbers[numbers % 2 == 0]
print(even_numbers)  # 输出 [2 4 6 8 10]

# 法1:推导式 —— 过滤元组
numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
even_numbers = tuple(x for x in numbers if x % 2 == 0)
print(even_numbers)  # 输出 (2, 4, 6, 8, 10)

# 法1:字典推导式
scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 95}
passed_students = { name: score for name, score in scores.items() if score >= 80}
print(passed_students)  # 输出 {'Alice': 85, 'Bob': 92, 'David': 95}

# 法2:高阶函数 —— (过滤列表)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6, 8, 10]


# 法2:高阶函数 —— (过滤字典)
students = [
    {'name': 'Alice', 'age': 20, 'grade': 'A'},
    {'name': 'Bob', 'age': 19, 'grade': 'B'},
    {'name': 'Charlie', 'age': 21, 'grade': 'A'},
    {'name': 'David', 'age': 18, 'grade': 'C'}
]

# 过滤出年龄大于等于20岁的学生
filtered_students = list( filter(lambda student: student['age'] >= 19, students))
print(filtered_students)
# 输出: [{'name': 'Alice', 'age': 20, 'grade': 'A'}, {'name': 'Charlie', 'age': 21, 'grade': 'A'}]

# 过滤出成绩为'A'的学生
filtered_students = list(filter(lambda student: student['grade'] == 'A', students))
print(filtered_students)
# 输出: [{'name': 'Alice', 'age': 20, 'grade': 'A'}, {'name': 'Charlie', 'age': 21, 'grade': 'A'}]


# 法3:循环遍历 —— (过滤列表)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
print(even_numbers)  # 输出 [2, 4, 6, 8, 10]


# 法3:循环遍历 —— (过滤字典)

scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 95}
passed_students = {}
for name, score in scores.items():
    if score >= 80:
        passed_students[name] = score
print(passed_students)  # 输出 {'Alice': 85, 'Bob': 92, 'David': 95}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值