首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python中的两个相邻列表

python中的两个相邻列表
EN

Stack Overflow用户
提问于 2014-07-20 22:11:05
回答 3查看 191关注 0票数 3

我找到了这个代码示例,我认为它写得很好,但是我很难理解为什么它的一部分工作。

代码搜索字符串中最长的单词:

代码语言:javascript
复制
def LongestWord(str):
    ''.join(map(lambda x: [' ',x][x.isalnum()], str)).split()

我不知道[' ',x][x.isalnum()]是如何工作的。这个建筑有名字吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-20 22:13:29

把它分成两部分..。

代码语言:javascript
复制
[' ', x]

生成一个包含2个元素的列表。改写为:

代码语言:javascript
复制
lst = [' ', x]
lst[x.isalnum()]

现在,我们看到第二个括号是索引由第一个括号创建的列表。由于str.isalnum()返回布尔值(TrueFalse),并且布尔值的行为类似于python中的整数(True -> 1False -> 0),所以构造只会选择列表中的两个元素之一。

请注意,现在(python2.5及更高版本),使用条件表达式更为惯用(而且可能更有效):

代码语言:javascript
复制
lambda x: x if x.isalnum() else ' '
票数 5
EN

Stack Overflow用户

发布于 2014-07-20 23:41:18

理解此代码的关键是知道布尔值可用于索引列表。

代码语言:javascript
复制
['a','b'][True] # produces 'b'
['a','b'][False] # produces 'a'

所以密码

代码语言:javascript
复制
[' ',x][x.isalnum()]

如果x是alpha-数值,则会产生x,否则会产生‘’。

票数 2
EN

Stack Overflow用户

发布于 2014-07-20 22:37:57

这是一种将句子字符串拆分成单字列表的方法,但将所有非字母数字字符替换为空格,该空格通过分隔符被删除。要理解它,您必须从map命令开始。字符串(str)由lambda函数检查,它是否为字母数字,如果是,则字符保持不变('x'),但如果不是,则由‘’(空格)替换。括号的工作方式是假的,对的。map函数遍历字符串(str)。然后,生成的列表(带有单个字符)作为字符串(使用"".join命令)连接到完整的句子中,然后分裂成单词(使用拆分()命令,以空格字符作为分隔符)。

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

https://stackoverflow.com/questions/24855406

复制
相关文章

相似问题

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