In this article we will discuss how to sort a list of numbers in ascending and descending order using two different techniques.

## list.sort() vs sorted()

### list’s sort() function

In Python, list provides a member function sort() that can sorts the calling list in place.

### sorted() Function

It’s a built in function that accepts an iterable objects and a new sorted list from that iterable.

Let’s use both to sort a list of numbers in ascending and descending Order

Suppose we have a list of number’s i.e.

```# List of numbers
listOfNum = [23, 45, 21, 45, 2, 5, 11, 50, 1, 67]
```

## Sorting the List in ascending Order using sorted()

```# Create a sorted copy of existing list
newList = sorted(listOfNum)```

It will create a newList with sorted numbers in ascending order i.e.
```newList
[1, 2, 5, 11, 21, 23, 45, 45, 50, 67]```

Whereas, existing list will not change
```listOfNum
[23, 45, 21, 45, 2, 5, 11, 50, 1, 67]```

## Sorting the List in ascending Order using list.sort()

```# Sort the List in Place
listOfNum.sort()```

It will sort the list itself.

listOfNum is now a  List Sorted in Ascending Order

`[1, 2, 5, 11, 21, 23, 45, 45, 50, 67]`

## Sorting the List in Descending Order using sorted()

```# Create a sorted (Descending Order) copy of existing list
newList = sorted(listOfNum, reverse=True)```

It will create a newList with sorted numbers in Descending order i.e.
```newList
[67, 50, 45, 45, 23, 21, 11, 5, 2, 1]```

Whereas, existing list will not change
```listOfNum
[23, 45, 21, 45, 2, 5, 11, 50, 1, 67]```

## Sorting the List in Descending Order using list.sort()

```# Sort the List in Place (Descending Order)
listOfNum.sort(reverse=True)```

It will sort the list itself.

listOfNum is now a  List Sorted in Descending Order

`[67, 50, 45, 45, 23, 21, 11, 5, 2, 1]`

Complete example is as follows,
```def main():

# List of numbers
listOfNum = [23, 45, 21, 45, 2, 5, 11, 50, 1, 67]

# print the List
print("Initial List", listOfNum,  sep='\n')

print("Sorting the List in ascending Order")

# Create a sorted copy of existing list
newList = sorted(listOfNum)
# print the List
print("New List", newList,  sep='\n')
# print the List
print("Existing List", listOfNum,  sep='\n')

# Sort the List in Place
listOfNum.sort()

# print the List
print("List Sorted in Ascending Order", listOfNum,  sep='\n')

print("Sorting the List in Descending Order")

# Create a sorted copy of existing list
newList = sorted(listOfNum, reverse=True)
# print the List
print("New List", newList,  sep='\n')
# print the List
print("Existing List", listOfNum,  sep='\n')

# Sort the List in Place (Descending Order)
listOfNum.sort(reverse=True)

# print the List
print("List Sorted in Descending Order", listOfNum,  sep='\n')

if __name__ == "__main__":
main()

```

Output:
```Initial List
[23, 45, 21, 45, 2, 5, 11, 50, 1, 67]
Sorting the List in ascending Order
New List
[1, 2, 5, 11, 21, 23, 45, 45, 50, 67]
Existing List
[23, 45, 21, 45, 2, 5, 11, 50, 1, 67]
List Sorted in Ascending Order
[1, 2, 5, 11, 21, 23, 45, 45, 50, 67]
Sorting the List in Descending Order
New List
[67, 50, 45, 45, 23, 21, 11, 5, 2, 1]
Existing List
[1, 2, 5, 11, 21, 23, 45, 45, 50, 67]
List Sorted in Descending Order
[67, 50, 45, 45, 23, 21, 11, 5, 2, 1]
```