Python:如何在列表之间更改项?



我正在尝试编写2048年的游戏代码,但我被卡住了向上/向下移动的部分。例如,如果我有一个这样的列表:

2 0 2 4 
0 8 2 4
4 4 2 0
0 4 0 2

我想把我的数字往上移动,所以我写了这样的东西:

2 8 2 4
4 4 2 4
0 4 2 2
0 0 0 0

我都不知道怎么开始,有人能给我点建议吗?我试过这个,但它只适用于一个单位矩阵:

new_matrix = [] 
for line in matrix: 
for pos, element in enumerate(line): 
if element != 0: 
new_matrix.append(element) 
line[pos] = 0 
list.clear(matrix[0]) 
matrix[0] = new_matrix 
return (matrix) 

您可以遍历列表,检查哪个索引包含0,假设(n)然后将下一个元素的值赋给n的第一个索引,并使下一个元素的n的第一个索引0:

A = [[1,0,2,1],[0,1,3,4],[4,5,1,0],[0,3,0,1]]
length = len(A)
for i, elem in enumerate(A):
for j, item in enumerate(elem):
if item == 0 and i + 1 < length:
A[i][j] = A[i+1][j]
A[i+1][j] = 0
print(A)

打印:

[[1, 1, 2, 1], [4, 5, 3, 4], [0, 3, 1, 1], [0, 0, 0, 0]]

当前示例:

>>> A
[[2, 0, 2, 4],
[0, 8, 2, 4],
[4, 4, 2, 0],
[0, 4, 0, 2]]
>>> for i, elem in enumerate(A):
for j, item in enumerate(elem):
if item == 0 and i + 1 < length:
A[i][j] = A[i+1][j]
A[i+1][j] = 0
>>> A
[[2, 8, 2, 4],
[4, 4, 2, 4],
[0, 4, 2, 2],
[0, 0, 0, 0]]

相关内容

  • 没有找到相关文章

最新更新