我想转换一个列表:
["Red", "Green", "Blue"]
进入字符串三元组的元组序列:
[("RED", "Red", ""), ("GREEN", "Green", ""), ("BLUE", "Blue", "")]
到现在为止,我总是使用这种方法:
def list_to_items(lst):
items = []
for i in lst:
items.append((i.upper(), i, ""))
return items
但感觉有点难看。有没有更好/更pythonic的方式这样做?
答案 0 :(得分:3)
return语句中的代码称为list comprehension。
def list_to_items(items):
return [(i.upper(), i, "") for i in items]
您可以找到更多信息http://www.secnetix.de/olli/Python/list_comprehensions.hawk
答案 1 :(得分:3)
与list comprehension类似,但有点不同。
这是地图功能。
lst = ["Red", "Green", "Blue"]
new_lst = map(lambda x: (x.upper(), x, ""), lst)
它基本上根据您输入的函数作为第一个参数逐个更改列表的每个元素。在这种情况下是这样的:
lambda x: (x.upper(), x, "")
如果你不知道 lambda 是什么,那就像高中数学一样:
f(x) = (x.upper(), x, "") # basically defines a function in one line.
答案 2 :(得分:2)
你可以使用理解:
def list_to_items(lst):
return [(item.upper(), item.title(), '') for item in lst]