如何在Python中编辑列表的每个成员
我刚开始学习Python,想写一个函数,可以把字符串里的所有单词都变成大写,或者只把第一个单词变成大写。下面是我的函数:
def capitalize(data, applyToAll=False):
"""depending on applyToAll it either capitalizes
all the words in the string or the first word of a string"""
if(type(data).__name__ == "str"):
wordList = data.split()
if(applyToAll == True):
for word in wordList:
wordList[word] = word.capitalize() #here I am stuck!
return " ".join(wordList)
else: return data.capitalize()
else: return data
所以简单来说,我想修改这个项目,但我不知道该怎么做。
顺便问一下,这是个可选的问题:在C#里我可以调试我的代码,大家在Python里用什么工具来调试呢?
2 个回答
5
最常见的方法是使用列表推导式:
>>> l = ['one', 'two', 'three']
>>> [w.capitalize() for w in l]
['One', 'Two', 'Three']
这样做会创建一个列表的副本,并对每个项目应用指定的表达式。
如果你不想创建副本,可以这样做...
>>> for i, w in enumerate(l):
... l[i] = w.capitalize()
...
>>> l
['One', 'Two', 'Three']
...或者这样:
l[:] = (w.capitalize() for w in l)
后者可能是修改列表的最优雅方式,但要注意,它使用的临时存储空间比enumerate
方法要多。
3
使用列表推导式:
def capitalize(s, applyToAll=False):
if applyToAll:
l = [w.capitalize() for w in s.split()]
return " ".join(l)
else:
return s.capitalize()
你们在Python中用什么来调试呢?
对于复杂的代码,我会使用print
语句来查看结果,其他的情况就用交互式解释器。我写了很多测试,并通过nose来运行这些测试。