这是我为程序编写的函数,它应该将值移动到列表中。
def moveCard(deck):
index = deck.index(27)
deck.pop(index)
left = deck[:index+1]
right = deck[index+1:]
left.append(27)
print (left + right)
deck = left + right
然而它没有正确添加两个列表,除非我在它自己的功能中打印它。
使用文本列表卡运行功能= [24,27,2,5,8,11]打印出正确的列表,为[24,2,27,5,8,11]。但是,如果我在运行我获得的方法之后简单地询问卡的价值 [24,2,5,8,11]。任何想法为什么会这样?
EDIT 这是我的功能:
def move_joker_1(套牌):
index = deck.index(JOKER1)
deck.pop(index)
left = deck[:index+1]
right = deck[index+1:]
left.append(JOKER1)
deck = left + right
print(left + right)
print(dec
这是我输入shel / results的内容:
卡= [24,27,2,5,8,11]
move_joker_1(卡)
[24,2,27,5,8,11]
[24,2,27,5,8,11]
打印(卡)
[24,2,5,8,11]
答案 0 :(得分:1)
我认为你的问题是这样的:
在moveCard
函数中,您有一个名为deck
的参数。首先你这样做:
deck.pop(index)
这正在修改传入的实际列表,因此调用者将会看到它。
然后,后来:
deck = left + right
那不是修改任何东西;它正在创建一个新列表left + right
,并将局部变量deck
更改为该新列表的名称,而不是旧列表的名称。
你可能想要做的是返回新列表,这样调用者就可以将它存储在他想要的任何地方。但在这种情况下,您不希望使用pop
变异原始列表。
或者,您可以两次就地修改列表,例如,通过撰写deck[:] = left + right
。
答案 1 :(得分:0)
从您的编辑:您没有修改cards
列表。您应该在函数中添加return
语句,然后按如下方式调用函数:cards = move_joker_1(cards)
。