如何从矩阵Python中的列表中删除元素?

时间:2017-12-13 13:16:47

标签: python matrix pop

我正在尝试在python中构建Nim“策略的数学游戏”,我有从矩阵中删除特定列表中的元素的问题,我开始从用户获取游戏模式然后开始删除元素,这里代码我写道;

ubuntu:17.10
  

Stacks :是我在main中构建的矩阵    StackNum :我要从中删除的列表数量。
  匹配:我要删除的元素数量。

还有另一个名为 ManageGame 的功能,它控制用户的输入“如果它是2个玩家或1,获得StackNum / Matches”:

ubuntu:17.04
  

lastDot(Stack):检查矩阵是否有多于1个Dot的函数。

问题是当我试图从StackNum中删除多少元素时,我得到的结果如下:
来自:

enter image description here

当我输入def RemoveMatches(Stacks,StackNum,Matches): if not_empty(Stacks[StackNum]): lenStack=len(Stacks[StackNum]) try: val=int(Matches) except ValueError: print ("Wrong input,try only with numbers") return False if val>lenStack: print "try again with smaller number" return False else : for i in range(Matches): Stacks[StackNum].pop() return True else: print "Stack that you have chose is already empty,try other satck" return False 时,我得到:

enter image description here

不知怎的,我从每个矩阵行中删除了2个点,我在代码中看不到问题。

2 个答案:

答案 0 :(得分:0)

行中的回报:

for i in range(Matches):
    Stacks[StackNum].pop()
    return True

位于错误的位置。你必须在for之后移动它。 否则,在第一次迭代之后它将退出并且不运行所有迭代:

for i in range(Matches):
    Stacks[StackNum].pop()
return True

答案 1 :(得分:0)

此处列表l=[]的问题,这里是我如何构建矩阵:

l=[]
tmp=[]
for i in range(10):
    l.append('*')
for i in range(5):
    tmp.append(l)

python使用指针,所以我为tmp添加了相同的指针,当我对其中一个进行更改时,其余部分将相同。
我在这里是如何解决的:

for i in range(5):  
    tmp.append(10)  

当我想要弹出元素时,我会减去匹配数字。