【问题标题】:How to extend lists without list.extend method and without '+' operator如何在没有 list.extend 方法且没有“+”运算符的情况下扩展列表
【发布时间】:2018-08-19 21:20:57
【问题描述】:

我想做一个扩展函数,它可以用作 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]

我想做一个像“extending_func”这样的函数,但我没有成功地将它全部放到一个列表中,我不知道我是否需要将列表的类型更改为其他东西来完成它,或者我只需要一个简单的想法来解决它。我也尝试使用 list.append,但它给了我下一个结果(只是为了尝试这个想法,但正如我所写的,我需要扩展 x 而不是 y):

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

【问题讨论】:

  • 在循环中使用append
  • 我在互联网课程中学习,但我没有上这节课(我知道如何编程,但我不应该使用循环......)
  • 切片的答案是最好的
  • 所以你不能使用extend+=仅仅因为?
  • 这是我课程中的奖励任务,我不知道该怎么做

标签: python function methods operator-keyword extend


【解决方案1】:

使用列表切片将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] 被添加到 x = [4, 5, 6] 的前面(在索引 0 处)(请参阅 this tweak by Jean-François Fabre 以获得更好的方法)

【讨论】:

    【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2014-12-07
      • 2017-07-31
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      相关资源
      最近更新 更多