2014-10-02 91 views
1

我试图写变成小写字母串到所有大写字母的字符串的函数。我试图使用reduce和map()来做到这一点,虽然列表理解,而不是地图也不会有问题。如何添加列表元素,并将其转换为字符串

+1

将使用'string.upper()'是一个选项,或者你需要做到这一点你自己? – TheSoundDefense 2014-10-02 15:46:13

+0

你的'all_caps'函数有两个返回语句。只有第一个将被执行。 – 2014-10-02 15:52:00

回答

2

使用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建立一个字符串非常低效因为它创建每次添加后的新字符串。甚至中等长度的字符串的性能会过度。

+0

你的add函数需要两个字符串并返回一个。 'def add_s(s,t):return s + t'。或者使用'operator.add'。 – 2014-10-02 16:09:09

相关问题