Я пытаюсь построить перестановки списка с i-м битом, перевернутым каждый раз.Карта Python со списком в качестве входного
Например:
С вводом:
[1,0,0,0]
Чтобы получить:
[0,0,0,0]
[1,1,0,0]
[1,0,1,0]
[1,0,0,1]
Я написал метод, который дал список возвращает тот же список с битом в положении р изменилось :
def flipBit(l,p):
l[p] = ~l[p]&1
return l
И я пытаюсь применить его с помощью map()
, но я не могу даже получить простой пример работает:
p=list(map(flipBit, [[1,0,0]]*3,range(3))))
Это то, что она возвращает:
[[0, 1, 1], [0, 1, 1], [0, 1, 1]]
, ожидая:
[[0, 0, 0], [1, 1, 0], [1, 0, 1]]
Что я делаю неправильно? (если кто-то может предложить еще более короткий код для этого, возможно, без использования флипбитного метода, я бы это оценил, так как я не буду использовать флипбит, кроме этой цели, и я хочу, чтобы код был кратким и чистым)