镜花丿水月 发表于 2022-3-7 17:58:49

请问del list[:]不只是单纯的清空列表里的内容吗?

如图
list_0 = []重置列表和
del list_0[:] 清空列表
得出来的结果完全不一样

请问为什么会这样呢??

python爱好者. 发表于 2022-3-7 17:59:52

清空请使用 clear() 方法:
list_0.clear()

isdkz 发表于 2022-3-7 18:12:21

因为添加进 output 的 list_0 跟 你定义的 list_0 共用同一个地址,

而你用 del list_0[:] 会将你定义的 list_0 的元素清空,自然添加进 output 里面的列表也被清空了

你如果不想对添加进 output 里面的列表造成影响的话,得把它的拷贝加进 output,而不是 list_0,

故对你的代码修改如下:

count = int(input('请输入需要zip的元素数量:'))
i = 0
list_0 = []
output = []
while i < count:
    x = input('请输入当前列表中的元素(输入STOP结束): ')
    if x != 'STOP':
      list_0.append(x)
    else:
      output.insert(i, list_0[:])      # 这里list_0改成list_0[:]
      i += 1
      del list_0[:]
print(output)

镜花丿水月 发表于 2022-3-7 23:46:43

isdkz 发表于 2022-3-7 18:12
因为添加进 output 的 list_0 跟 你定义的 list_0 共用同一个地址,

而你用 del list_0[:] 会将你定义的 ...

谢谢您的解答
但是想伸展地请问一下,如果仅仅想把这个变量给清空 该用什么命令呢???我试了 clear()函数也不行。。。就单纯地清空 不影响其他的已使用过这个变量的值的。该怎么办呢。。。。

wp231957 发表于 2022-3-8 06:44:27

本帖最后由 wp231957 于 2022-3-8 07:26 编辑

镜花丿水月 发表于 2022-3-7 23:46
谢谢您的解答
但是想伸展地请问一下,如果仅仅想把这个变量给清空 该用什么命令呢???我试了 clear() ...

del变量名
listname=[]

镜花丿水月 发表于 2022-3-8 09:35:09

wp231957 发表于 2022-3-8 06:44
del变量名
listname=[]

哈哈哈果然还是只能通过赋值的形式来初始化谢谢您啦
页: [1]
查看完整版本: 请问del list[:]不只是单纯的清空列表里的内容吗?