a = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9, 10]
]

# for i in range(len(a)):
#     for j in range(len(a[0])): # 배열의 열이 서로 다른 경우 첫번째 열의 길이를 기준으로 맞춤
#         print(a[i][j])

b = [1, 2, 3, 4]

# 부분집합의 원소를 선택하기 위한 이진수 생성
for i in range(1 << len(b)):  # 부분집합 총 개수 : 1<<4 = 10000(2) = 16 = 16번 반복
    # 생성된 이진수를 &연산을 통해 어디가 1인지 확인하고 부분집합 생성
    for j in range(len(b)):   # 각 요소가 인덱스에 있는지 없는지 확인
        if i & (1 << j):      # i : 모든 부분집합 / 1<<j : 하나하나 요소
            print('[{}]'.format(b[j]), end=",")
    print(' ')
