В моем коде я пытаюсь получить каждую комбинацию элементов в списке (я не хотел использовать itertools). Я делаю это путем подсчета в двоичном формате с помощью True
и False
, а затем применяю это в исходном списке, чтобы получить все комбинации (если это правда, число останется в списке, но не будет удалено). Теперь я присвоил x
0, поэтому [False, False, ...]
, а в l oop добавляются двоичные числа. Теперь проблема в том, что если я хочу сбросить список до 0, он не изменится и просто продолжу использовать предыдущий список. например, в первом коде, где print(x)
печатается: [False,False,False,False,False,False,False,False,],[True,False,False,False,False,False,False,False,],[True,True,False,False,False,False,False,False,], ...]
. Я могу напечатать x
или test
, и он напечатает тот же результат, но я не изменил x. Есть идеи?
def get_combinations(arr):
true = []
x = []
for thing in range(0,len(arr)):
true.append(thing)
x.append(False)
true.sort(reverse=True)
test = []
final = []
länge = 2**len(arr)
for number in range(länge):
test = x <------------------------------- here
#print(x) or print(test)
for thing in true:
if number / (2**thing) >= 1:
test[thing] = True
number -= 2**thing
final.append(test)
return final
test = [1,2,4,5,3,1,5,13]
get_combinations(test)
Если я изменю строку на:
test = [False,False,False,False,False,False,False,False]
, она будет работать нормально.