基于python中的true/false元组的zip

sas*_*llo 1 python tuples list python-2.7

我想要一个由ziped列表组成的变量,但只有那些被选中的变量.那是,

selected = (True, True, False)
mylist1 = [1,2,4]
mylist2 = [4,5,8]
mylist3 = [3,2,7]
Run Code Online (Sandbox Code Playgroud)

所以,我想要的是mylist = zip(mylist1, mylist2)如果selected像上面那样.也就是说,我zip只想标记为标记为的那些列表True.目前我有一堆if-else,看起来很难看.稍后我将需要对三个以上的列表做同样的事情,我觉得必须有一个更通用的解决方案.在那儿?

ole*_*leg 6

我喜欢代表你 itertools.compress()

lists = [mylist1, mylist2, mylist3]
result = zip(*itertools.compress(lists, selected))
Run Code Online (Sandbox Code Playgroud)

compress创建一个迭代器,用于从数据中过滤元素,只返回那些在选择器中具有相应元素且评估为True的元素.当数据或选择器可迭代用尽时停止.