Python中的map函数是如何用于迭代一个列表(可迭代)并在另一个列表(可迭代)上执行逻辑的。例如,我们有一个索引列表作为
indices
和一个字符串列表作为 str_list
。然后,我们想让从 i
的 indices
中取出的索引 str_list
处的元素为空。是的,索引保证在 str_list
长度范围内。有一些简单的方法可以做到,但是,我想弄清楚映射函数如何在两个单独的列表场景中工作。我想出的这个有错误:
str_list = map(lambda index : str_list[index] = "", indices)
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
Lambda 函数只能包含单个表达式。使用
=
运算符进行赋值是一个语句,因此它在您的示例中不起作用。
您可以使用
list.__setitem__
完成作业,但是:
>>> strings = ['zero', 'one', 'two', 'three']
>>> indices = [1, 3]
>>> list(map(lambda x: strings.__setitem__(x, ''), indices))
[None, None]
>>> list(strings)
['zero', '', 'two', '']
这是对
map
的滥用,所以我建议不要真正这样做。