似乎正确的Python小写列表理解测试失败了吗?

时间:2018-09-07 21:15:00

标签: python list list-comprehension lowercase

我正在做一个Python课程,其中涉及完成许多在线问题,而且这个任务看起来真的很简单(获取字符串列表并将其转换为小写字母)。但是,无论尝试什么,我的代码都会失败。我已经尝试过列表理解和循环,但无济于事-它只是说测试失败。 这是下面的代码:

def lowercase(strings):
    """takes a list strings and replaces string with lowercase words"""
    strings = [x.lower() for x in strings]
    return strings   

strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings) 

我提供的零件是:

def lowercase(strings):
    """takes a list strings and replaces string with lowercase words"""


strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings) 

因此,我只允许在将“字符串”更改为小写的函数内编写代码(我可以在doc字符串下编写代码,但不能修改其他任何内容,例如删除测试代码的三行) 。因为他们的测试声明了字符串并在我的代码下调用了该函数,所以它似乎只会覆盖我编写的任何内容!我觉得我疯了,因为这是一个初学者的问题,我无法通过测试。我做错了什么?谢谢!

3 个答案:

答案 0 :(得分:7)

您只需要进行一点更改:使用切片分配在适当的位置修改列表,而不是创建新列表。然后,您不需要返回它(实际上,Python约定不这样做)。

def lowercase(strings):
    """takes a list of strings and replaces each with lowercase version"""
    strings[:] = (x.lower() for x in strings)

答案 1 :(得分:3)

您的问题是您拥有的函数在其中制作了strings的副本,并返回了该副本。而是要在适当的位置修改列表。

这是一种实现方法:

def lowercase(strings):
    """takes a list strings and replaces string with lowercase words"""
    for i, x in enumerate(strings):
        strings[i] = x.lower()

strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings)
#['lower', 'case', 'sentence']

代替列表理解(创建新列表),遍历strings的索引并修改每个元素。

答案 2 :(得分:0)

使用相同的列表理解代码尝试此

strings = ['LOWER', 'CASE', 'SENTENCE']
strings = lowercase(strings)

print(strings)