Python program returning None Type array when appe

2019-09-21 05:12发布

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

2条回答
我只想做你的唯一
2楼-- · 2019-09-21 05:31

Your problem is in

l = l.sort()

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

l = sorted(l)

which will actually make a copy of the original list with the elements in sorted order.

查看更多
3楼-- · 2019-09-21 05:33

In python, you can populate a list as follows with a list comprehension

l = [str(i) for i in range(0, 1000)]
l > ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ..]

If you use sort in a list, it returns None which is an indicator in python, that it does the operation in place. So to print a sorted list, it's enough to do:

l.sort()
print(l)
查看更多
登录 后发表回答