2

わかりましたので、この論理的な質問をpythonicな方法で解決しようとしていますが、あまり得意ではありません。ここに行きます:

次のような数字のリストが書かれた紙があります。

1 2 3 4 | 5 6 7 8

紙を真ん中で左から右に折ると、次のようになります。

(最初の数字が上) (4,5) (3,6) (2,7) (1,8)

どちらの方向にももう一度折りたたんで、新しい順序を取得できます (右から左の例):

(最初の番号が一番上、次に 2 番目が下、...など) (8,1,4,5) (7,2,3,6)

紙を折り、正しい順序でリストのリストを取得する方法を確認することから始めました。

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

half_paper = len(paper)/2
s = paper[:half_paper]
e = paper[half_paper:]
middle_distance = 0

final_list = []

for l in range(half_paper):
    print l
    m = [s[half_paper-middle_distance-1],e[middle_distance-half_paper]]
    final_list.append(m)     
    middle_distance += 1

 print final_list

これは機能し、結果は [[4,5]、[3,6]、[2,7]、[1,8]] (左から右に折りたたむ) になります。しかし今、私は立ち往生しています。リスト内包表記を使用して final_list の結果にロジックを適用する方法を見つけようとしてきたので、紙をもう一度「折りたたんで」[[5,4,1,8]、[6 ,3,2,7]] (もう一度左から右に折りたたむか、右から左に折りたたむ場合は [[8,1,4,5], [7,2,3,6]])。

リスト内包表記を使用して、 for ループで行ったことをリストのリストで行う方法がわかりません。リストのリストが得られます。私を始めるためのアイデアはありますか?

4

1 に答える 1