6

「中間」要素が最大数になるように、ソートされたリストを並べ替える必要があります。中央までの数字は増分で、中央を超える数字は降順です。

私は次の実用的な解決策を持っていますが、もっと簡単にできると感じています:

foo = range(7)
bar = [n for i, n in enumerate(foo) if n % 2 == len(foo) % 2]
bar += [n for n in reversed(foo) if n not in bar]
bar
[1, 3, 5, 6, 4, 2, 0]
4

2 に答える 2

1

ステップ2を上げ、-2を戻すスライスを使用します。

>>> foo[1::2]+foo[-1::-2]
[1, 3, 5, 6, 4, 2, 0]
于 2012-05-07T13:12:09.067 に答える