append python 基础问题

a=[]
for i in range(7):
a.append(i)
print(a)
我知道上面是正确的
为什么
a=[]
for i in range(7):
a=a.append(i)
print(a)
就会报错

因为append该方法无返回值,但是会修改原来的列表。
所以第二种a做返回值有问题

append没有返回值,所以不能传给a啊。

你非要那样,需要写一个带有返回值的函数:

 def myappend(a,b):
  a.append(b)
  return a #注意这一行,去掉的话,只能myappend(a,i)

a=[]
for i in range(7):
  a = myappend(a,i)
print(a)

a=a.append(i) 这个是错误的,a.append(i) 已满足你的需求了。

这个问题的技术点是,存不存在返回值得问题,
如果有返回值,可以定义一个变量去接受这个返回值
如果没有,则是相当于修改原先的变量
搞清楚谁有返回值,谁没有返回值,这种问题就不是问题

a.appent(i) 本身就是对列表a进行增加值,并返回一个None
最简单的理解下 你可以打印下这个方法就知道了

a=[]

print(a.append(1)) #None

因为append的方法没有返回值(或者返回值是None)
第一次循环的时候
相当于
a = None(a.ppend(i),因为没有返回值)#第一次不会报错
第二次循环的时候
a = a.append(i )>>相当于>>a = None.appned(i),而None是没有append方法的,所以会报None 类型是没有append方法的错误