鱼C论坛

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

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

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

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

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

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

使用道具 举报

发表于 2022-9-4 14:29:29 | 显示全部楼层
也许这样?
>>> a=[1,2,3,4,5,6]
>>> b=[100,200,300]
>>> a=[*a[:3],*b,*a[3:]]
>>> a
[1, 2, 3, 100, 200, 300, 4, 5, 6]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

print("a 的id:", id(a))
print("c 的id:", id(c))

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

print("a 内容:", a)
print("c 内容:", c)
print("a 的id:", id(a))
print("c 的id:", id(c))

print("=" * 30)

print("b 的id:", id(b))
print("d 的id:", id(d))

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

print("b 内容:", b)
print("d 内容:", d)
print("b 的id:", id(b))
print("d 的id:", id(d))

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


# 我的输出:
# a 的id: 2331965413056
# c 的id: 2331965413056
# a 切片后:
# a 内容: [1, 0, 0, 2, 3]
# c 内容: [1, 2, 3]
# a 的id: 2331968333440
# c 的id: 2331965413056
# ==============================
# b 的id: 2331965382720
# d 的id: 2331965382720
# b insert后:
# b 内容: [4, 99, 5, 6]
# d 内容: [4, 99, 5, 6]
# b 的id: 2331965382720
# d 的id: 2331965382720
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 14:49:51 | 显示全部楼层
arr = [13, 8, 96, 52, 4]
num = 999 # 想插入的元素
index = 2 # 想插入的位置
arr = arr[:index] + [num] + arr[index:] # 格式:arr[:i] + x + arr[i:]
print(arr)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 14:56:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-4 14:57 编辑
a = [1,2,3,4,5,6]
b = [100,200,300]
a = a[:2] + b + a[2:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


lst = new_List([1, 2, 3, 4, 5])
lst.insert(2, [8, 8, 8, 9])
print(lst)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 16:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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