Вместо того, чтобы пытаться перебирать индексы массива и затем индексировать массивы, почему бы не перебрать их напрямую?
vals = [ [[1],[2],[3]], [[1],[2],[3]], [[1],[2],[3]], [[1],[2],[3]] ]
result = []
for nested in vals: # e.g. nested = [[1], [2], [3]]
for more_nested in nested: # e.g. more_nested = [1]
val = more_nested[0] # e.g. val = 1
result.append([val])
После запуска result
содержит:
[[1], [2], [3], [1], [2], [3], [1], [2], [3], [1], [2], [3]]
Если нет необходимости создавать новые списки с одной записью в выходном массиве, вы можете упростить две последние строки:
result.append(more_nested)