我想知道您是否可以使用这样的映射:
x = ["a"]
y = ["b","c","d"]
map(x.append,y)
我希望x = [“ a”,“ b”,“ c”,“ d”],但是不会发生
答案 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)