Мой код выглядит следующим образом (я не знаю, почему это не отступом):Почему мой код не изменяет список?
def move_joker_2(deck):
#start checking every card in the deck until the position of
#JOKER2 is found
#we start from position 0
position = 0
while deck [position] != JOKER2:
position = position + 1
#the new position for JOKER2
if position < len (deck) - 3:
new_position = position + 2
elif position == len (deck) - 2:
new_position = 0
else:
new_position = 1
#to reorganize deck, we need 2 things
# 1.) a list of the cards above JOKER2 after moving the cards
# 2.) a list of the cards below JOKER2 after moving the cards
#depending of new_position, there are 3 possible new decks
if new_position == 0:
#no cards above, JOKER2 will become the top card
cards_above = []
#every other card will be below it
cards_below = deck
#remove JOKER2, since we moved it
cards_below.pop(position)
elif new_position == 1:
#the only card above JOKER2 will be the top card
cards_above = [deck[0]]
#every other card up except the last one will be below it
cards_below = deck [new_position:len(deck)-1]
else:
cards_above = deck[0:new_position+1]
#remove JOKER2, since we moved it
cards_above.pop(position)
cards_below = deck [new_position+1:]
#final deck
deck = cards_above + [JOKER2] + cards_below
Мой код получает список строк и мутирует его в конце концов ...
Но почему он не меняет исходный список? Например:
палубе = [1, 3, 27, 8, 9] move_joker_2 (дека)
Он должен изменить список, если учесть, что JOKER2 27, чтобы: [1, 3 , 8, 9, 27]
Но всякий раз, когда я называю палубу она не изменилась ...
Боковой комментарий о коде: вы уверены, что вам действительно нужно три различных случая? – 6502