2014-10-02 29 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

相關問題