Tekler Çiftler Sıralı

SORU: Verilen dizi içindeki tekler kendi aralarında çifler kendi aralarında sıralanıyor.
Sıralama şartları şunlar tekler küçükten büyüğe sıralanacak
Çiftler ise karalerine göre küçükten büyüğe sıralanacak
ÖRNEK:[7,-3,4,5,0,2,-8,6,1] ise çıktısı [-3, 1, 0, 5, 2, 4, 6, -8, 7]
Farklı çözümleri merakla bekliyorum :slight_smile:

Kendi aralarında sıralanan bu sayılar çıktıda niye aynı liste içerisinde bulunuyor, tek ve çift sayıları beraberken neye göre sıralayacağız?

Demek isteğimi daha net açıklamaya çalışıyım
Örneğin elimde [7,5,3,6,8,10] listesi var teklerin dizi içinde bulunduğu konuma ancak tek geliyor.Çiftlerinkinede çift ve küçükten büyüğe sıralıyoruz verilen kurallar dahilinde ve çıktı [3,5,7,6,8,10] oluyor
Bir kaç örnek daha yazayım sözel olarak ifade edememiş olabilir ama örnekten anlaşılır diye düşünüyorum
[-4,3,1,2] çıktısı [2,1,3,-4]
[5,-7,0,-3,6,2] çıktı [-7,-3,0,5,2,6]

f = lambda i: (lambda odds, evens: [next(odds) if j%2 else next(evens) for j in i]) \
                    (
                        *(lambda odds, evens: map(iter, (sorted(odds), sorted(evens, key=abs))))
                            (
                                filter(lambda n: n%2, i),
                                filter(lambda n: not n%2, i)
                            )
                    )
1 Beğeni
def sıralama(array):
    tekler=[]
    çiftler=[]
    for i in array:
        if i %2==1:
            tekler.append(i)
        else:
            çiftler.append(i)

    tekler.sort()
    çiftler.sort(key=lambda x:x**2)
    for i in range(len(array)):
        if array[i]%2==1:
            array[i]=tekler[0]
            tekler.pop(0)
        else:
            array[i]=çiftler[0]
            çiftler.pop(0)

    return array