使用条件偶数列表创建带有地图的元组

时间:2018-05-18 22:59:21

标签: python list dictionary tuples list-comprehension

这是我的代码:

evenorodd=[1,2,3]
list1=['a','b','c']
list2=['A','B','C']

res = tuple(map(lambda x: True if x % 2 != 0 else False, evenorodd))

print(res)

输出:

(False, True, False, True)

我想要这个:list1的元素如果x%2!= 0(如果偶数元素是奇数)               list2 else的元素(如果evenorodd的元素是偶数) 我寻找的输出:

('a','B','c')

我希望在一行上做到这一点

res = tuple(map(lambda x: ??? if x % 2 != 0 else ???, evenorodd))

谢谢

4 个答案:

答案 0 :(得分:4)

您可以使用zip

evenorodd=[1,2,3]
list1=['a','b','c']
list2=['A','B','C']
new_result = [a if c%2 == 0 else b for a, b, c in zip(list2, list1, evenorodd)]

输出:

['a', 'B', 'c']

答案 1 :(得分:3)

这样的事情:

res = tuple([x if not ind % 2 else y for ind, (x,y) in enumerate(zip(list1,list2))])
print(res)
#('a', 'B', 'c')

答案 2 :(得分:1)

另一种方法是使用numpy.where()

import numpy as np
tuple(np.where([i%2 for i in evenorodd], list1, list2))

答案 3 :(得分:1)

以下是使用maplambda的解决方案 - 仅限函数:

tuple(map(lambda v: v[0] if v[2] % 2 else v[1], zip(list1, list2, evenorodd)))