在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]
我无法在一行中编写此代码。谁能告诉我如何一齐解决这个问题?
答案 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)