【发布时间】:2014-11-27 15:49:13
【问题描述】:
我正在尝试编写一个函数,将一串小写字母转换为一串全大写字母。我正在尝试使用 reduce 和 map() 来执行此操作,尽管列表理解而不是 map 也可以。
【问题讨论】:
-
可以选择使用
string.upper(),还是您需要自己做? -
您的
all_caps函数有两个返回语句。只有第一个 on 会被执行。
我正在尝试编写一个函数,将一串小写字母转换为一串全大写字母。我正在尝试使用 reduce 和 map() 来执行此操作,尽管列表理解而不是 map 也可以。
【问题讨论】:
string.upper(),还是您需要自己做?
all_caps 函数有两个返回语句。只有第一个 on 会被执行。
使用str.upper():
>>> 'How are you?'.upper()
'HOW ARE YOU?'
关于您的问题“我无法弄清楚如何将它们从列表中重新组合成字符串”,请使用str.join:
>>> lis = ['H', 'O', 'W', ' ', 'A', 'R', 'E', ' ', 'Y', 'O', 'U', '?']
>>> ''.join(lis)
'HOW ARE YOU?'
如果你想使用reduce,你需要给它一个初始值'',并给它一个接受两个参数并将它们归约为一个结果的函数:
>>> reduce(lambda s,t:s + t, lis, '')
'HOW ARE YOU?'
reduce 没有lambda:
>>> import operator
>>> reduce(operator.add, lis, '')
'HOW ARE YOU?'
重要提示:使用reduce 构建字符串效率非常低,因为它会在每次添加后创建一个新字符串。即使是中等长度的字符串,性能也会过高。
【讨论】:
def add_s(s, t):return s + t。或使用operator.add。