我找到了这个代码示例,我认为它写得很好,但是我很难理解为什么部分代码可以正常工作。
该代码搜索字符串中最长的单词:
def LongestWord(str):
''.join(map(lambda x: [' ',x][x.isalnum()], str)).split()
我不知道如何[' ',x][x.isalnum()]
运作。这个结构有名称吗?
分成两部分...
[' ', x]
建立2个元素的列表。改写为:
lst = [' ', x]
lst[x.isalnum()]
现在我们看到第二个括号将索引第一个括号创建的列表。由于str.isalnum()
返回布尔值(True
或False
),并且布尔值的行为类似于python(True
-> 1
,False
-> 0
)中的整数,因此该构造仅选择列表中两个元素之一。
请注意,目前(python2.5及更高版本),使用条件表达式更为习惯(并且可能更有效):
lambda x: x if x.isalnum() else ' '
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句