Why Does "Return List.Sort()" Return None, Not the List

Why does return list.sort() return None, not the list?

list.sort sorts the list in place, i.e. it doesn't return a new list. Just write

newList.sort()
return newList

Why does sorting a list return None?

list.sort() always returns None (the list is sorted in-place). What you want is sorted(list) which returns a new sorted list.

Then you can sort them like this:

mylist = [int(x) for x in mylist]
mylist.sort(reverse=True)
mylist = [str(x) for x in mylist]

Python .sort() on a list of a set returns None

Yes, list.sort method sorts the list in place and returns None. If you want to return the sorted list use sorted method.

>>> lst=[5, 2, 1, 4, 3]
>>> lst.sort()
>>> lst
[1, 2, 3, 4, 5]
>>> lst=[5, 2, 1, 4, 3]
>>> lst=sorted(lst)
>>> lst
[1, 2, 3, 4, 5]
>>>

So you will have to use: common_elements = sorted(list(set.union(*x))) or you can sort in place like this:

common_elements = list(set.union(*x))
common_elements.sort()

Why does list.sort return none when you make it a variable?

Because it modifies the list in-place so it doesn't return anything. In the other hand you can use sorted() which will return the modified list.

Why does '.sort()' cause the list to be 'None' in Python?

Simply remove the assignment from

result = result.sort()

leaving just

result.sort()

The sort method works in-place (it modifies the existing list), so it returns None. When you assign its result to the name of the list, you're assigning None. So no assignment is necessary.


But in any case, what you're trying to accomplish can easily (and more efficiently) be written as a one-liner:

max(len(Ancestors(T,x)) for x in OrdLeaves(T))

max operates in linear time, O(n), while sorting is O(nlogn). You also don't need nested list comprehensions, a single generator expression will do.

python: order a list of numbers without built-in sort, min, max function

I guess you are trying to do something like this:

data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []

while data_list:
minimum = data_list[0] # arbitrary number in list
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)

print (new_list)

#Added parenthesis

Why return is returning 'None' instead the of required 'List'?

Because you are not printing the list, you are just returning it (the list object itself). This op(a) is appropriate if you want to do something with the list, but if you just want to print its content you should call print(op(a)) or change the op function to print the contents of the list instead of returning it.

Return a default value if a dictionary key is not available

You can use dict.get()

value = d.get(key)

which will return None if key is not in d. You can also provide a different default value that will be returned instead of None:

value = d.get(key, "empty")

Why do I get AttributeError: 'NoneType' object has no attribute 'something'?

NoneType means that instead of an instance of whatever Class or Object you think you're working with, you've actually got None. That usually means that an assignment or function call up above failed or returned an unexpected result.



Related Topics



Leave a reply



Submit