是否可以在List.append之类的方法上使用map

时间:2019-04-21 21:26:00

标签: python

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

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

我希望x = [“ a”,“ b”,“ c”,“ d”],但是不会发生

4 个答案:

答案 0 :(得分: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是要产生将函数应用于可迭代项(这里是None返回的x.append())并将其用于迭代的结果。该功能的副作用使事情变得不清楚。

答案 1 :(得分:0)

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

输出:

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

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

extend()方法的语法是:

  

list1.extend(list2)

在此,将list2的元素添加到list1的末尾。

答案 2 :(得分:0)

任何这样做的理由?

map是可读性和执行速度最差的选择。

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

答案 3 :(得分:0)

据我所知,扩展功能将列表作为输入。使用map()时,它将尝试获取一个元素,因为map将一个可迭代的元素逐个赋予函数,然后再次将结果作为列表返回。

这应该做

x.extend(y)