鱼C论坛

 找回密码
 立即注册
查看: 2999|回复: 6

[已解决]python能否用切片的方法来完成insert()函数

[复制链接]
发表于 2022-9-4 14:11:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python能否用切片的方法可以实现在列表的任意位置插入多个元素的列表。
最佳答案
2022-9-4 14:56:11
本帖最后由 jackz007 于 2022-9-4 14:57 编辑
  1. a = [1,2,3,4,5,6]
  2. b = [100,200,300]
  3. a = a[:2] + b + a[2:]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-4 14:29:29 | 显示全部楼层
也许这样?
  1. >>> a=[1,2,3,4,5,6]
  2. >>> b=[100,200,300]
  3. >>> a=[*a[:3],*b,*a[3:]]
  4. >>> a
  5. [1, 2, 3, 100, 200, 300, 4, 5, 6]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 14:49:36 | 显示全部楼层
本帖最后由 hrpzcf 于 2022-9-4 14:51 编辑

可以用切片实现多个数据插入列表的效果,但是要看实际场景,下面是区别
  1. a = [1, 2, 3]
  2. b = [4, 5, 6]
  3. c = a
  4. d = b
  5. e = [0, 0]

  6. print("a 的id:", id(a))
  7. print("c 的id:", id(c))

  8. a = a[:1] + e + a[1:] # c 不会跟着变
  9. print("a 切片后:")

  10. print("a 内容:", a)
  11. print("c 内容:", c)
  12. print("a 的id:", id(a))
  13. print("c 的id:", id(c))

  14. print("=" * 30)

  15. print("b 的id:", id(b))
  16. print("d 的id:", id(d))

  17. b.insert(1, 99) # d 也会跟着变
  18. print("b insert后:")

  19. print("b 内容:", b)
  20. print("d 内容:", d)
  21. print("b 的id:", id(b))
  22. print("d 的id:", id(d))

  23. # 切片后,a 不再是原来的 a,而 b insert 后还是原来的 b


  24. # 我的输出:
  25. # a 的id: 2331965413056
  26. # c 的id: 2331965413056
  27. # a 切片后:
  28. # a 内容: [1, 0, 0, 2, 3]
  29. # c 内容: [1, 2, 3]
  30. # a 的id: 2331968333440
  31. # c 的id: 2331965413056
  32. # ==============================
  33. # b 的id: 2331965382720
  34. # d 的id: 2331965382720
  35. # b insert后:
  36. # b 内容: [4, 99, 5, 6]
  37. # d 内容: [4, 99, 5, 6]
  38. # b 的id: 2331965382720
  39. # d 的id: 2331965382720
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 14:49:51 | 显示全部楼层
  1. arr = [13, 8, 96, 52, 4]
  2. num = 999 # 想插入的元素
  3. index = 2 # 想插入的位置
  4. arr = arr[:index] + [num] + arr[index:] # 格式:arr[:i] + x + arr[i:]
  5. print(arr)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 14:56:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-4 14:57 编辑
  1. a = [1,2,3,4,5,6]
  2. b = [100,200,300]
  3. a = a[:2] + b + a[2:]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 15:15:29 | 显示全部楼层
不能  有个 insert能做 切片做不到 的事情:append

评分

参与人数 1荣誉 +4 鱼币 +4 贡献 +3 收起 理由
python爱好者. + 4 + 4 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 09:33:41 | 显示全部楼层
  1. class new_List(list):
  2.     def insert(self, pos : int, lst : list):
  3.         temp = self[:]
  4.         self.clear()
  5.         self += temp[:pos] + lst + temp[pos:]


  6. lst = new_List([1, 2, 3, 4, 5])
  7. lst.insert(2, [8, 8, 8, 9])
  8. print(lst)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表