Apply TransformBlocks based on index

Consider the code:

def p7(x): return x + 7
def m2(x): return x * 2
plus7_block = TransformBlock(item_tfms=[p7])
mul2_block = TransformBlock(item_tfms=[m2])
noop_block = TransformBlock()
    
data = torch.ones(10)
db = DataBlock(blocks = [noop_block, mul2_block, plus7_block])
dls = db.dataloaders(data, bs =1)
first(dls.train)

What I wanted to achieve is to get three items with a different block applied to each, so the output [1, 2, 8] in this example. How it works instead is to apply all the blocks at all the positions and returns [9, 9, 9].

Is there a simple way to use DataBlock to do what I want? I’m aware that if the elements had different types I can make the transforms select it based on that, but I want to keep the types the same.

[Edit] Btw the type_tfms already do work that way, I wanted the same on the DataLoader level