根据一些实验,在我看来,下面的python v2.7代码:
def lookup_pattern(pattern, file_containing_patterns):
for line in file_containing_patterns:
splits = line.split()
if splits:
if (pattern == splits[0]):
return map(lambda x: x.strip(), splits[1:])
return None
可以简化为删除
map
的strip()
:def lookup_pattern(pattern, file_containing_patterns):
for line in file_containing_patterns:
splits = line.split()
if splits:
if (pattern == splits[0]):
return splits[1:]
return None
我相信这是真的,因为
split()
应该删除所有空白,因此strip()
将是一个no-op。是否存在上述两种情况不完全相同的情况,如果是,它们是什么?
最佳答案
documents表明,使用隐式空格分隔符(即split
没有其他参数)的“cc>”将清除任何“空令牌”,而不需要删除任何东西。由于任何连续的空白序列都可以解释为一个由空格分隔的空标记列表,这意味着字符串将被自动修剪。
如果使用不同的分隔符拆分或隐式定义空白,则可能发生以下情况:
' 1 2 3 '.split()
=> ['1', '2', '3']
' 1 2 3 '.split(None, 1)
=> ['1', '2 3 ']