我想要一个由 ziped 列表组成的变量,但只有那些被选中的列表。也就是说,
selected = (True, True, False)
mylist1 = [1,2,4]
mylist2 = [4,5,8]
mylist3 = [3,2,7]
所以,如果 selected 像上面那样,我想要的是获取 mylist = zip(mylist1, mylist2)。也就是说,我只想zip 那些标记为True 的列表。目前我有一堆 if-else,它看起来很难看。稍后我需要对三个以上的列表做同样的事情,我觉得必须有一个更通用的解决方案。有吗?
请您参考如下方法:
我喜欢代表你 itertools.compress()
lists = [mylist1, mylist2, mylist3]
result = zip(*itertools.compress(lists, selected))
compress make an iterator that filters elements from data returning only those that have a corresponding element in selectors that evaluates to True. Stops when either the data or selectors iterables has been exhausted.
