繁体   English   中英

Python小写函数for循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM