编写一行代码以获取单独数组中的奇数和偶数

时间:2018-08-25 05:55:42

标签: python algorithm

在tcs codevita采访中有人问我这个问题。给定一个数组

a = [1,2,3,4,5,6,7,8,9,10]

您必须用Python编写一行代码,以便获得2个不同的数组/列表,其中一个数组将包含奇数,而另一个数组将包含偶数。即一个列表

odd = [1,3,5,7,9]

和其他列表

even =[2,4,6,8,10]

我无法在一行中编写此代码。谁能告诉我如何一齐解决这个问题?

5 个答案:

答案 0 :(得分:2)

您可以在一行中使用两个列表推导:

odd, even = [el for el in a if el % 2==1], [el for el in a if el % 2==0]

print(odd, even)
#([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

答案 1 :(得分:1)

列表理解可以解决这个问题。 但是,您不应该理解偶数和奇数列表的构造,而是从原始列表a中弹出一种(即使在这种情况下),然后放入列表中,而您在a中剩下的将是另一种种类(奇数):

>>> even, odd = [a.pop(index) for index, item in enumerate(a) if item % 2 == 0], a
>>> print(even,odd)
[2, 4, 6, 8, 10] [1, 3, 5, 7, 9]

答案 2 :(得分:0)

您可以使用2的步骤对列表进行切片:

odd, even = a[::2], a[1::2]

答案 3 :(得分:0)

使用密钥进入单个列表

print(sorted(j,key=lambda x:(x%2,-a.index(x))))

答案 4 :(得分:0)

Using list comprehension:    

def evenodd(myl): 
       evenlist = [num for num in myl if num % 2 == 0] 
       oddlist = [num for num in myl if num % 2 == 1]  
       print("Even numbers:", evenlist) 
       print("Odd numbers:", oddlist) 
      
    mylist=list()
    n=int(input("Enter the size of the  List:"))
    print("Enter the numbers:")
    for i in range(int(n)):
       k=int(input(""))
       mylist.append(k)
    evenodd(mylist)