我正在尝试创建一个小写所有输入的函数。
最后我应该能够小写:
result = lowerList('Jen', 'Suzie')
print(result)
到目前为止,我有:
def lowerList(input1, input2):
myList = [input1, input2]
for x in myList:
return(x.lower())
result = lowerlist('Jen', 'Suzie')
print(result)
仁
所以现在我只能得到第一个输入。另外如何修改它以连续循环任意数量的输入而不修改函数?
答案 0 :(得分:3)
你的问题是,在你只对一个元素进行操作之后,你在for循环的第一次迭代中返回。您需要构建修改后的值的列表,然后返回整个列表。
您可以手动执行此操作:
def lower_list(*args):
strings = []
for string in args:
strings.append(string.lower())
return strings
但更简单,更优雅的解决方案是使用列表理解:
def lower_list(*args):
return [string.lower() for string in args]
如果您使用它,另一个选择是使用生成器;
def lower_list(*args):
for string in args:
yield string.lower()
它会像这样使用:
>>> str_gen = lower_list('Hello', 'WORld', 'Name', 'BUCKs')
>>> next(str_gen)
'hello'
>>> next(str_gen)
'world'
>>> next(str_gen)
'name'
>>> # etc...
或者,如果您需要一次完整的字符串列表:
>>> list(lower_list('Hello', 'WORld', 'Name', 'BUCKs'))
['hello', 'world', 'name', 'bucks']
答案 1 :(得分:1)
def to_lower(*args):
return [arg.lower() for arg in args]
>>> to_lower('SPAM', 'Eggs')
['spam', 'eggs']
答案 2 :(得分:0)
你不会在循环中返回,在那里中止for循环。而是在循环完成后,创建一个新列表将降低的元素附加到for循环amd返回中。
答案 3 :(得分:0)
那是因为当你返回for循环停止时。您应该做的是将结果字符串附加到列表并返回它。 使用您的代码作为基础:
def lowerList(input1, input2):
myList = [input1, input2]
l = []
for x in myList:
l.append(x.lower())
return l
result = lowerList('Jen', 'Suzie')
print(result)
答案 4 :(得分:0)
根据列表的大小,使用生成器甚至可能更有效:
def to_lower(*args):
for arg in args:
yield arg.lower()
答案 5 :(得分:0)
您只获得第一个输入的原因是因为您只返回第一个输入。从函数返回后,除非再次调用,否则无法返回该函数。
for myList中的x: 返回(x.lower())
相反,你可以这样做:
def lowerList(myList):
normalList = []
for x in myList:
normalList.append(x.lower())
return normalList
normalList = ['Jen', 'Suzie']
result = lowerList(normalList)
print(result)
返回一个新列表,其中所有项目都是小写的,并打印出来。
希望这有帮助!