【Kata Daily 190919】Sort Out The Men From Boys(排序)
题目:
Scenario
Now that the competition gets tough it will Sort out the men from the boys .
Men are the Even numbers and Boys are the odd
Task
Given an array/list [] of n integers , Separate The even numbers from the odds , or Separate the men from the boys
Notes
-
Return an array/list where Even numbers come first then odds
-
Since , Men are stronger than Boys , Then Even numbers in ascending order While odds in descending .
-
Array/list size is at least *4*** .
-
Array/list numbers could be a mixture of positives , negatives .
-
Have no fear , It is guaranteed that no Zeroes will exists .
-
Repetition of numbers in the array/list could occur , So (duplications are not included when separating).
Input >> Output Examples:
menFromBoys ({7, 3 , 14 , 17}) ==> return ({14, 17, 7, 3})
Explanation:
Since , { 14 }
is the even number here , So it came first , then the odds in descending order {17 , 7 , 3}
.
menFromBoys ({-94, -99 , -100 , -99 , -96 , -99 }) ==> return ({-100 , -96 , -94 , -99})
Explanation:
-
Since ,
{ -100, -96 , -94 }
is the even numbers here , So it came first in ascending order , *then** *the odds in descending order{ -99 }
-
Since , (Duplications are not included when separating) , then you can see only one (-99) was appeared in the final array/list .
menFromBoys ({49 , 818 , -282 , 900 , 928 , 281 , -282 , -1 }) ==> return ({-282 , 818 , 900 , 928 , 281 , 49 , -1})
Explanation:
-
Since ,
{-282 , 818 , 900 , 928 }
is the even numbers here , So it came first in ascending order , then the odds in descending order{ 281 , 49 , -1 }
-
Since , (Duplications are not included when separating) , then you can see only one (-282) was appeared in the final array/list .
题目很长,其实大意就是:找出list中的偶数和奇数的不重复组合,偶数进行升序,奇数进行降序排列
解题办法:
def men_from_boys(arr): return sorted([i for i in set(arr) if i%2==0]) + sorted([i for i in set(arr) if i%2!=0], reverse=True)
其他解题思路:
def men_from_boys(arr): men = [] boys = [] for i in sorted(set(arr)): if i % 2 == 0: men.append(i) else: boys.append(i) return men + boys[::-1]
知识点:
1、去除重复项使用set()
2、排序使用sorted(list, reverse=False)
3、奇数偶数获取