You are given an array of integers. Your task is to sort odd numbers within the array in ascending order, and even numbers in descending order.
Note that zero is an even number. If you have an empty array, you need to return it.
For example:
```
[5, 3, 2, 8, 1, 4]  -->  [1, 3, 8, 4, 5, 2]
odd numbers ascending:   [1, 3,       5   ]
even numbers descending: [      8, 4,    2]
```
def sort_array(lst):
    s = sorted(lst)
    even = (n for n in s[::-1] if n & 1 == 0)
    odd = (n for n in s if n & 1)
    return [next(odd if n & 1 else even) for n in lst]
def sort_array(lst):
    s = sorted(lst)
    even = (n for n in s[::-1] if n & 1 == 0)
    odd = (n for n in s if n & 1)
    return [next(odd if n & 1 else even) for n in lst]