Нагуглил небольшое решение в таком виде:
print [(x,y) for x in list[0] for y in list[1]]
>> [('aa1', 'bb1'), ('aa1', 'bb2'), ('aa1', 'bb3'), ('aa2', 'bb1'), ('aa2', 'bb2'), ('aa2', 'bb3')]
То, что надо, но есть одно но- как мне теперь подобное реализовать на динамичность, так сказать? Ведь в данном примере я прохожусь только по 0 и 1 индексу списка, а их может быть и 3 и 5...