使用模式创建更大的列表列表

2024-03-28 21:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下模式:

PATTERN = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]

我想用这个来创建以下内容:

PATTERN | HORIZONTAL_MIRROR (PATTERN)
VERTICAL_MIRROR(PATTERN) | HORIZONTAL_MIRROR(VERTICAL_MIRROR(PATTERN))

换句话说:

[[1, 2, 3, 3, 2, 1],[4, 5, 6, 6, 5, 4],[7, 8, 9, 9, 8, 7], [7, 8, 9, 9, 8, 7], [4, 5, 6, 6, 5, 4], [1, 2, 3, 3, 2, 1]]

除了从PATTERN复制每个元素之外,还有没有一种有效的方法可以在Python中使用?你知道吗


Tags: 方法元素mirror模式patternverticalhorizontal
2条回答

只是一个想法:

PATTERN = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
def patternify(l):
    for sl in l:
        yield sl+sl[::-1]
    for sl in l[::-1]:
        yield sl+sl[::-1]

list(patternify(PATTERN))
#output: [[1, 2, 3, 3, 2, 1], [4, 5, 6, 6, 5, 4], [7, 8, 9, 9, 8, 7], [7, 8, 9, 9, 8, 7], [4, 5, 6, 6, 5, 4], [1, 2, 3, 3, 2, 1]]

如果我正确理解了要求:

def mirror(pat):
    return pat + pat[::-1]

SUPERPATTERN = mirror(map(mirror, PATTERN))

相关问题 更多 >