繁体   English   中英

Python中函数的列表理解

[英]List Comprehensions in Functions, Python

我想创建一个函数,在其中输入一个列表(带有小写和大写字符串),然后该函数将使所有大写字符串变为小写并再次输出列表。 我尝试使用列表理解,但是不确定是否有更简单的方法可以将变量分配给this /?

def lowerlist(inputList):
    [x.lower() for x in inputList]
    print inputList 

inputList = ["Red", "green", "Blue"]
lowerList(inputList)

只需return您的列表组件,使用inputList[:] = lower_list(input_list)即可使用更新后的返回值更新原始列表:

def lower_list(inp):
    return [x.lower() for x in inp]


input_list = ["Red", "green", "Blue"]

input_list[:] =  lower_list(input_list)

或使用地图:

input_list = ["Red", "green", "Blue"]
input_list[:] =  map(str.lower,input_list)

[:]语法意味着您实际上更新了原始列表/对象中的值,还可以返回生成器表达式:

 def lower_list(inp):
    return (x.lower() for x in inp)

并以相同的方式使用它:

 input_list = ["Red", "green", "Blue"]
 input_list[:] =  lower_list(input_list)

您可以只返回新创建的列表:

def lowerlist(inputList):
    return [x.lower() for x in inputList]

inputList = ["Red", "green", "Blue"]
resultList = lowerlist(inputList)

顺便说一句,列表理解会创建一个新列表,它不会就地更改列表,因此,如果执行以下操作:

[x.lower() for x in inputList]

您不是在修改inputList ,而是在创建一个新列表(然后可以返回此列表并进行分配)

除了列表理解不会更改列表(至少从python 2.7开始),因此您需要:

 print "{0}, ".format([x.lower() for x in inputList])

列表理解会返回一个列表,所以类似

lowercaseStrings = [x.lower() for x in inputList]

您要迭代的列表保持不变。 因此,inputList仍将包含小写和大写字符串的混合。

要返回小写字符串列表,可以使用以下命令(如其他答案所述)

def lowerlist(inputList):
    return [x.lower() for x in inputList]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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