先打个广告:欢迎关注我的公众号,参与 文史大挑战 趣味题目。使用方法见 这篇文章 。
正文开始:
这篇文章要讨论的是,如何用 Python 提取出一个序列中,符合特定条件的所有元素。例如,找出序列里的所有正数、所有以 Wang 结尾的名字、等等
背景
假设我们要处理的 list 为:
range(-5, 5) # [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
上面这个 list 只是个例子,其实不止 list,本文适用的对象是所有 iterables ,比如 list、 tuple、set 等 sequence 类型,也可以是字符串、甚至是自定义的对象。简单来说,iterables 是可以使用 for 的对象。
下面看看如何提取出 list 里所有的正数:
方法一:for 循环
result = []
index = []
for i, x in enumerate(range(-5, 5)):
if x > 0:
result.append(x)
index.append(i)
方法二:列表解析 List comprehension
result = [x for x in range(-5, 5) if x>0]
index = [i for i,x in enumerate(range(-5, 5)) if x>0]
方法三:filter 函数
filter 函数和 列表解析 是等效的,即
filter(function, iterable)
等效于
[item for item in iterable if function(item)]
所有能让 function
得到 True
的值,都被放入 filter
的返回集合。
def pos(x):
return x>0
result = filter(pos, range(-5,5))
或者使用匿名函数 Lambda 表达式:
result = filter(lambda x:x>0, range(-5,5))
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
标签: PYTHON
给个免费的赞吧~
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/python-find-positive/ ,且不得用于商业用途。