python大写给定的字符串列表

python capitalizing a given list of strings

我在下面的代码中遇到了一个问题

1
2
3
4
5
6
7
def capitalize_names(my_input):
   """fill in the function"""
    return

def test_capitalize_names():
    assert ["James"] == capitalize_names(["JAMES"])
    assert ["Harry","Jack"] == capitalize_names(["HArry","jack"])

我用下面的代码来填充上面的函数

1
2
3
my_input = map(str.capitalize, my_input)

return my_input

它正在返回['James'],但我希望它返回["James"]以满足断言语句,并且我不能使用任何控制语句


更简洁的方法:例如:

1
2
3
4
5
6
7
import string
def capitalize_names(lst_str):
    return map(string.capitalize, lst_str)

if __name__ == '__main__':
    print capitalize_names(["HArry","jack","JAMES"])
    # ['Harry', 'Jack', 'James']

试试这个:

1
2
def capitalize_names(input):
    return list(map(lambda s: s.capitalize(), input))

这是一种有效的方法。


最快的方法是:

1
2
3
4
5
def capitalize_names(inp):
    return [i.capitalize() for i in inp]
def test_capitalize_names():
    assert ["James"] == capitalize_names(["JAMES"])
    assert ["Harry","Jack"] == capitalize_names(["HArry","jack"])