首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Regex,在定义变量之前调用它?

Python Regex,在定义变量之前调用它?
EN

Stack Overflow用户
提问于 2018-09-12 06:04:12
回答 1查看 43关注 0票数 0

我对这段代码的实际工作原理感到困惑:

代码语言:javascript
复制
print([m.start() for m in re.finditer('p', word)])

如果我只运行print语句而不运行for循环,而不运行其他所有语句,那么就没有定义m。如何在调用m.start()方法后运行for循环,并在for循环中创建变量?如果有人能分解一下这段代码并解释一下实际发生了什么,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 07:01:04

下面是相同的代码,没有使用generator expression (即一行for循环)

代码语言:javascript
复制
result_list = []
for m in re.finditer('p', word):
    result_list.append(m.start())
print(result_list)

这很简单,所以让我们来看看我们是如何在你的代码片段中表示它的。

re.finditer('p', word)返回一个我们要循环遍历的迭代值。

m.start() for m in re.finditer('p', word)是生成器表达式。可以将其看作是“m.start()re.finditer('p', word)返回的迭代量中的每一项m返回的值”。在阅读之前,不要着迷于我们使用m的事实--这只是Python的语法是自然语言的启发,而不是面向操作的。

[m.start() for m in re.finditer('p', word)]迭代我们定义的生成器,将值放入一个列表中。一个常见的错误是假设我们可以将生成器视为一个列表-它不能被索引,只能迭代一次。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52284786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档