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方法的错误