python小写函数for循环

时间:2017-10-12 18:24:06

标签: python python-3.x 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)
  

所以现在我只能得到第一个输入。另外如何修改它以连续循环任意数量的输入而不修改函数?

6 个答案:

答案 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)

返回一个新列表,其中所有项目都是小写的,并打印出来。

希望这有帮助!