欢迎访问宙启技术站
智能推送

在Python中使用map和filter函数的技巧和例子

发布时间:2023-09-13 14:02:51

map和filter是Python内置的高级函数,可以在列表、元组或其他可迭代对象上应用函数。它们都能简化代码并提高代码的可读性。下面是使用map和filter函数的技巧和例子。

使用map函数的技巧和例子:

1. 将列表中的每个元素加倍:

numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers)
# 输出结果:[2, 4, 6, 8, 10]

2. 将列表中的每个元素转换为字符串:

numbers = [1, 2, 3, 4, 5]
string_numbers = list(map(str, numbers))
print(string_numbers)
# 输出结果:['1', '2', '3', '4', '5']

3. 将多个列表对应位置的元素相加:

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
sum_numbers = list(map(lambda x, y: x + y, numbers1, numbers2))
print(sum_numbers)
# 输出结果:[5, 7, 9]

4. 使用map函数调用对象的方法:

class Circle:
    def __init__(self, radius):
        self.radius = radius
    def compute_area(self):
        return 3.14 * self.radius * self.radius

circles = [Circle(1), Circle(2), Circle(3)]
areas = list(map(Circle.compute_area, circles))
print(areas)
# 输出结果:[3.14, 12.56, 28.26]

使用filter函数的技巧和例子:

1. 过滤出列表中的偶数:

numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
# 输出结果:[2, 4]

2. 过滤出列表中长度大于等于3的字符串:

words = ['apple', 'banana', 'cat', 'dog', 'elephant']
long_words = list(filter(lambda x: len(x) >= 3, words))
print(long_words)
# 输出结果:['apple', 'banana', 'cat', 'dog']

3. 过滤出字典中值为True的键:

d = {'a': True, 'b': False, 'c': True, 'd': False}
true_keys = list(filter(lambda x: d[x], d))
print(true_keys)
# 输出结果:['a', 'c']

4. 使用filter函数过滤出对象列表中满足某个条件的对象:

class Person:
    def __init__(self, age):
        self.age = age
    def is_adult(self):
        return self.age >= 18

persons = [Person(15), Person(25), Person(30)]
adults = list(filter(Person.is_adult, persons))
print(adults)
# 输出结果:[<__main__.Person object at 0x7fc4d8fcafd0>, <__main__.Person object at 0x7fc4d8fcaf70>]

以上是使用map和filter函数的一些技巧和例子。它们是Python中非常有用的函数,可以大大简化代码并提高代码的可读性。可以根据不同的需求和情况选择合适的方式来使用它们。