wjhzj 发表于 2022-10-18 16:10:08

请问为什么list2输出的值不是空列表[],而是输出None?

为什么下面这个代码输出list2得到的结果不是[],list1清空以后不是空列表吗,赋值给list2以后为什不是输出空列表[]?


>>> list1 = ],3,5,8,13,18]
>>> list2 = list1.clear()
>>> print(list2)
None
>>> list2

tommyyu 发表于 2022-10-18 16:12:26

list1.clear() 是把 list1 里的数据清空,返回值是 None 。

wp231957 发表于 2022-10-18 16:17:16

list1.clear()是原地操作,不生成新的列表

jackz007 发表于 2022-10-18 16:28:38

本帖最后由 jackz007 于 2022-10-18 19:42 编辑

list1 = ],3,5,8,13,18]
list1 . clear()          # 无返回值
list2 = list1 . clear()# 其实就是 list2 = None
      这样才会得到空列表
list1 = ],3,5,8,13,18]
list2 = list1
list1 . clear()
print(list2)

灰晨 发表于 2022-10-18 16:30:12

list2 = list1.clear()
这里后面list1.clear()只是执行清空list1的操作,没有返回值,所以,list2没有得到赋值,因此是None
跟list2 = print(1)一样,后面只是执行了打印1,没有返回值,list2没有得到赋值,因此是None

LIUBOLIUHAO 发表于 2022-10-19 13:11:15

clear()的作用是清空列表不会返回值,例如a = print(1),print()只做打印没有返回值,若用a = return1,则有返回值

因此代码要把list2 = list1.clear()拆开写成

list2 = list1
list1.clear()

这里是清除列表1,list1 = [] , list2 = list1 ,list2 = []
      
页: [1]
查看完整版本: 请问为什么list2输出的值不是空列表[],而是输出None?