繁体   English   中英

如何比每次都多移动一次列表?

[英]How to shift a list one more time than before each time?

例如-左移:

例如,这是一个字母grid

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']

此功能将完成工作。 要确认背面空间,您可以打印字符串的长度。 input_grid是作为元素的行的列表。

def formater_fn(input_grid):
    right_len = len(input_grid) + len(input_grid[0])
    left_len = len(input_grid) + len(input_grid[0])
    for item in input_grid:
        right_item = item.rjust(right_len)
        new_item = right_item.ljust(left_len)
        right_len = right_len-1
        print new_item

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM