1

次のパターンがあるとしましょう。

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

から各要素をコピーする以外に、Python で使用できる効率的な方法はありPATTERNますか?

4

2 に答える 2

2

要件を正しく理解していれば:

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

SUPERPATTERN = mirror(map(mirror, PATTERN))
于 2013-02-12T03:59:16.920 に答える
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]]
于 2013-02-12T03:59:28.390 に答える