filter
可以用于过滤列表,返回一个新的 iterator 对象。
以下是一个数组,找出其中的奇数:
nums = [5, 10, 23, 64, 42, 53, 93, 2, 0, -14, 6, -22, -13]
def check_odd(x):
if x % 2:
return True
else:
return False
odds_func = filter(check_odd, nums)
print(list(odds_func))
# [5, 23, 53, 93, -13]
filter
的第一个参数可以改成 lambda
函数:
nums = [5, 10, 23, 64, 42, 53, 93, 2, 0, -14, 6, -22, -13]
odds = filter(lambda x: x % 2, nums)
print(list(odds))
# [5, 23, 53, 93, -13]
evens = filter(lambda x: not (x % 2), nums)
print(list(evens))
# [10, 64, 42, 2, 0, -14, 6, -22]
除了 filter
函数之外, 也可以使用 list comprehension 找出列表中的奇偶数:
nums = [5, 10, 23, 64, 42, 53, 93, 2, 0, -14, 6, -22, -13]
print("odds: ", [x for x in nums if x % 2])
# odds: [5, 23, 53, 93, -13]
print("evens: ", [x for x in nums if not (x % 2)])
# evens: [10, 64, 42, 2, 0, -14, 6, -22]