[英]python lowercase function for-loop
我试图创建一个函数以小写所有输入。
最后我应该能够小写:
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)
仁
所以现在我只能得到第一个输入。 另外,如何修改此值以连续循环任意数量的输入而不修改功能?
您的问题是仅对一个元素进行操作后,您将在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']
def to_lower(*args):
return [arg.lower() for arg in args]
>>> to_lower('SPAM', 'Eggs')
['spam', 'eggs']
您不会在循环中直接返回for循环。 而是在循环完成后在for循环amd return中创建一个新列表,将降低的元素附加到该列表。
那是因为当您返回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)
根据列表的大小,使用生成器可能会更有效:
def to_lower(*args):
for arg in args:
yield arg.lower()
之所以只获得第一个输入是因为您仅返回第一个输入。 从函数返回后,除非再次调用它,否则无法返回该函数。
对于myList中的x:return(x.lower())
相反,您可以执行以下操作:
def lowerList(myList):
normalList = []
for x in myList:
normalList.append(x.lower())
return normalList
normalList = ['Jen', 'Suzie']
result = lowerList(normalList)
print(result)
返回一个新列表,其中所有项目均小写,然后打印出来。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.