如何在没有list.extend方法的情况下扩展列表,而不使用' +'操作者

时间:2018-03-11 21:35:01

标签: python function methods operator-keyword extend

我想做一个扩展功能,一个可以作为list.extend方法工作,但我不希望它包含list.extend方法或者' +'运营商,此外我需要扩展' x'而不是' y' (你会看到)。

首先,这是x和y:

x = [4, 5, 6]
y = [1, 2, 3]

我试过这个: x = y, x 但它给了我这个结果:([1, 2, 3], [4, 5, 6]),我没有想法......

我想要做的事情(没有扩展方法和' +'运算符)将如下所示:

x = [4, 5, 6]
y = [1, 2, 3]
extending_func(x, y)
[1, 2, 3, 4, 5, 6]

我想做一个类似" extend_func"的功能。但我没有成功将它全部带到一个列表中,我不知道我是否需要将列表的类型变为其他类似的事情,或者我只需要一个简单的想法来解决它。我也尝试使用list.append,但它给了我下一个结果(只是为了尝试这个想法,但正如我写的那样我需要扩展x而不是y):

x = [4, 5, 6]
y = [1, 2, 3]
y.append(x)
[1, 2, 3, [4, 5, 6]]

2 个答案:

答案 0 :(得分:3)

使用列表切片将y附加到x

x = [4, 5, 6]
y = [1, 2, 3]
x[:0] = y
print(x)  # [1, 2, 3, 4, 5, 6]

请注意,在这种情况下,您附加列表的顺序非常重要; y = [1, 2, 3]的前面(在索引0处)添加了x = [4, 5, 6](有关更好的方法,请参阅this tweak by Jean-François Fabre

答案 1 :(得分:2)

Xay的答案很聪明,但它会将数据插入前面。

稍微调整一下:

x = [1,2,3]
y = [4,5,6]
def extending_func(x, y):
   x[len(x):] = y

extending_func(x,y)
print(x)

打印:

  [1, 2, 3, 4, 5, 6]