Skip to main content
 首页 » 编程设计

python之如何每次比以前多移动一个列表

2025年05月04日12over140

例如 - 左移:

例如,这是字母的网格

tiwxz           
shshq           
avidy           
bsvsc           

这就是我想要的效果。 X 符号填充移动产生的空间。

XXXtiwxz         # no shift 
XXshshqX         # one shift left 
XavidyXX         # two shift left 
bsvscXXX         # three shift left 
  • 字母网格将是一个列表,其中每一行都是一个项目
  • 我不知道这个列表要多长时间
  • 解决方案应该是纯 python

如何为 grid 进行左移和右移?

这就是我的全部:

def diags(grid, rev=False): 
    n = len(grid) 
    _grid = [list(row) + [None]*(n-1) for row in grid]   

请您参考如下方法:

您可以根据行的索引用 X(或 None)填充左侧和右侧,您可以通过 enumerate 获得该索引。 :

grid = [list(s) for s in 'tiwxz shshq avidy bsvsc'.split()] 
new_grid = [(['X'] * (len(grid) - 1) + lst)[i:] + ['X'] * i for i, lst in enumerate(grid)] 

输出

for l in new_grid: 
    print(l) 
 
# ['X', 'X', 'X', 't', 'i', 'w', 'x', 'z'] 
# ['X', 'X', 's', 'h', 's', 'h', 'q', 'X'] 
# ['X', 'a', 'v', 'i', 'd', 'y', 'X', 'X'] 
# ['b', 's', 'v', 's', 'c', 'X', 'X', 'X']