2Dリストを作成し、2Dリストにマスクを適用した後、the same type questionとしました。投稿されたソリューションは、2Dリストでは機能しませんでした。Pythonで2Dリストをマスクする方法は?
from itertools import compress
class MaskableList(list):
def __getitem__(self, index):
try: return super(MaskableList, self).__getitem__(index)
except TypeError: return MaskableList(compress(self, index))
aa=[['t', 'v'], ['a', 'b']]
aa=MaskableList(aa)
print(aa)
>>> [['t', 'v'], ['a', 'b']]
mask1=[[1,0],[0,1]]
print(aa[mask1])
>>> [['t', 'v'], ['a', 'b']]
mask2=[1,0,0,1]
print(aa[mask2])
>>> [['t', 'v']]
それが2Dリストをマスキングするために働く、クリーンで効率的な方法:ここで は、コードと出力されます。
これは、 'compress'がサブリストの項目ではなくリストの項目に作用するためです。だからすべてが真実です。 –