Reputation: 23
I have a list listOfNumbers = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
I want to sort this list in ascending order but first of all odd number then even number like this :
[1, 5, 7, 9, 11, 15, 19, 29,'startOF->evens', 4, 8, 10, 14, 16, 28, 32, 66]
without sort function
I've tried this but I get an error
data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
new_list = []
while data_list:
minimum = data_list[0]
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print (new_list)
def Huhu(data_list):
ev_li = ''
od_li = ''
for i in data_list:
if (i % 2 == 0):
ev_li.append(i)
else:
od_li.append(i)
print(new_list,od_li "startOF->evens",ev_li)
Thanks for the response I've done
data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
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)
odds = []
evens = []
for i in new_list:
if i % 2 == 0:
evens.append(i)
else:
odds.append(i)
print(odds,"startOF->evens", evens)
Upvotes: 2
Views: 572
Reputation: 4480
If you want to know why you code fails:
data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
new_list = []
while data_list:
minimum = data_list[0]
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print (new_list)
def Huhu(data_list):
ev_li = list()
od_li = list()
for i in data_list:
if (i % 2 == 0):
ev_li.append(i)
else:
od_li.append(i)
print(new_list,od_li, "startOF->evens",ev_li)
You have three errors:
First: indentation problem:
def Huhu(data_list):
ev_li = ''
od_li = '' <- Here
Second: a comma is missed here:
print(new_list,od_li [here] "startOF->evens",ev_li)
Third:
ev_li and od_li must be list
But for sure @CoryKramer is cleaner :P
Upvotes: 0
Reputation: 117856
You can use sorted
with a custom key
argument to sort by.
>>> sorted(listOfNumbers, key=lambda i: (i%2==0, i))
[1, 3, 5, 7, 9, 17, 25, 2, 4, 6, 8, 16, 22, 28]
In this case you can first sort by odd/even, then by the value itself.
Upvotes: 5