Python 列表中的高阶函数
Python higher order functions on lists
我有以下列表:
bananas = ['7,2,1 : Banana', 'Z : Banana', 'L,D : Banana']
我想使用 Python 的高阶函数来导出以下内容:
[['7', '2', '1'], ['Z'], ['L', 'D']]
我写了这个:
bananas_stripped = map(lambda x: [x.split(':')[0]], bananas)
...产生这个:
[['7,2,1 '], ['Z '], ['L,D ']]
我可以像这样申请另一个 HOF:
test = map(lambda x: x[0].split(','), bananas_stripped)
但我不知道如何在一个函数中全部编写,即我想在 bananas_stripped
.
内全部完成
我认为这会起作用:
bananas_stripped = map(lambda x: [x.strip().split(",") for x in [x.split(':')[0]]], bananas)
bananas_stripped = [['7,2,1 '], ['Z '], ['L,D ']]
new_bananas_stripped = []
for item in bananas_stripped:
item_string = item[0].replace(" ", "")
item_string = item_string.split(',')
new_bananas_stripped.append(item_string)
print(new_bananas_stripped)
这将给出输出
[['7', '2', '1'], ['Z'], ['L', 'D']]
抱歉,我不太擅长将代码简化为一行。
只是把vaultah的答案变成正确的答案。
map(lambda x: x.split(':')[0].strip().split(','), bananas)
我有以下列表:
bananas = ['7,2,1 : Banana', 'Z : Banana', 'L,D : Banana']
我想使用 Python 的高阶函数来导出以下内容:
[['7', '2', '1'], ['Z'], ['L', 'D']]
我写了这个:
bananas_stripped = map(lambda x: [x.split(':')[0]], bananas)
...产生这个:
[['7,2,1 '], ['Z '], ['L,D ']]
我可以像这样申请另一个 HOF:
test = map(lambda x: x[0].split(','), bananas_stripped)
但我不知道如何在一个函数中全部编写,即我想在 bananas_stripped
.
我认为这会起作用:
bananas_stripped = map(lambda x: [x.strip().split(",") for x in [x.split(':')[0]]], bananas)
bananas_stripped = [['7,2,1 '], ['Z '], ['L,D ']]
new_bananas_stripped = []
for item in bananas_stripped:
item_string = item[0].replace(" ", "")
item_string = item_string.split(',')
new_bananas_stripped.append(item_string)
print(new_bananas_stripped)
这将给出输出
[['7', '2', '1'], ['Z'], ['L', 'D']]
抱歉,我不太擅长将代码简化为一行。
只是把vaultah的答案变成正确的答案。
map(lambda x: x.split(':')[0].strip().split(','), bananas)