在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中非常有用的函数,可以大大简化代码并提高代码的可读性。可以根据不同的需求和情况选择合适的方式来使用它们。
