Thanks for the info!
Do you want to use all 300 samples at once?
I see the disadvantage of this approach, since your batch size is not flexible anymore.
I’ve created a small example to use a list of different sized point clouds and load each sample in the Dataset:
class MyDataset(Dataset):
    def __init__(self, data):
        self.data = data
        self.lengths = [len(d) for d in self.data]
        self.len = sum(self.lengths)
        
    def __getdata__(self, index):
        for idx, length in enumerate(self.lengths):
            if (index - length) < 0:
                print('Using data[{}][{}]'.format(idx, index))
                x = self.data[idx][index]
                break
            index -= length
        return x
    
    def __getitem__(self, index):
        x = self.__getdata__(index)
        return x
    
    def __len__(self):
        return self.len


data = []
data.append(torch.randn(100, 3))
data.append(torch.randn(200, 3))
data.append(torch.randn(150, 3))

dataset = MyDataset(data)
print(len(dataset))
# Check a few indices
dataset[0]
dataset[50]
dataset[99]
dataset[100]
dataset[299]
dataset[300]
dataset[449]

loader = DataLoader(
    dataset,
    batch_size=10,
    shuffle=True,
    num_workers=2
)

for data in loader:
    pass

This will make sure to load only a single point, so that you can use the DataLoader as usual.
Let me know, if that works for you!