是否可以在List.append等方法上使用map

问题描述 投票:0回答:4

我想知道你是否可以使用这样的映射:

x = ["a"]
y = ["b","c","d"]
map(x.append,y)

我想要x = [“a”,“b”,“c”,“d”],但这不会发生

python
4个回答
3
投票

map返回一个迭代器,所以只要你不迭代就没有任何反应。你可以通过调用list来实现这一点:

x = ["a"]
y = ["b","c","dx"]
list(map(x.extend,y))
# [None, None, None]
print(x)
# ['a', 'b', 'c', 'd', 'x']

请注意,由于extend期望迭代(str对象是),它将在y中的每个字符串上迭代并附加字符,因此您将在上面的示例中获得'd''x'

你可能打算使用append

x = ["a"]
y = ["b","c","dx"]
list(map(x.append,y))
# [None, None, None]
print(x)
# ['a', 'b', 'c', 'dx']

但无论如何,map意味着产生将函数应用于iterable项(这里是None返回的x.append())的结果,并且将它用于函数的副作用使事情变得相当不清楚。


0
投票
x = ["a"]
y = ["b","c","d"]
x.extend(y)
print (x)

输出:

 ['a', 'b', 'c', 'd']

extend()通过将列表的所有项(作为参数传递)添加到结尾来扩展列表。

extend()方法的语法是:

list1.extend(列表2)

这里,list2的元素被添加到list1的末尾。


0
投票

如我所知,扩展函数将列表作为输入。使用map(),它会尝试获取一个元素,因为map会将一个iterable的元素逐个赋予一个函数,并再次将结果作为列表返回。

这应该做

x.extend(y)

0
投票

这样做的原因是什么?

在可读性和执行速度方面,map是最糟糕的选择。

x = ["a"]
y = ["b","c","d"]
x.extend(y)
© www.soinside.com 2019 - 2024. All rights reserved.