这是我的代码:
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))
谢谢
答案 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)
以下是使用map
和lambda
的解决方案 - 仅限函数:
tuple(map(lambda v: v[0] if v[2] % 2 else v[1], zip(list1, list2, evenorodd)))