This question already has an answer here:
My python program has a minor problem. The case is that I'm trying to use myarray.append()
to my array, but in the python shell, it's telling me this when I do a test appending in the python shell:
>> l.append('1') # l is already defined
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
l.append('1')
AttributeError: 'NoneType' object has no attribute 'append'
>>
I'm very confused about this problem, but anyways, I'll let you see the code:
l=[] #*
i=1
while True:
if 3*i<1000:
l.append(str(i)) #*
else:
break
i+=1
l=l.sort()
print l
*I believe here are the main factors of the problem
I might just be going crazy and not realizing, but if you can help, please do.
P.S. When I run the program, on print l
, it just output's None
Your problem is in
The sort() method sorts a list in-place; the list itself is reordered, rather than returning a new list. The method returns None, which you are then assigning to
l
. So you just need to remove the assignment.An alternative is to use
which will actually make a copy of the original list with the elements in sorted order.
In python, you can populate a list as follows with a
list comprehension
If you use
sort
in a list, it returnsNone
which is an indicator in python, that it does the operation in place. So to print a sorted list, it's enough to do: