pythonで1文にfor in が多重ループになっている場合の解釈は？


現在pythonのコードをmatlabに変換しています。以下のコードの解釈がよく分かりませんので、教えていただけると幸いです。コードの内容はrecursive
bisectionとなります。

[code]

    cItems=[8,1,9,7,4,6,3,5,0,2]
    
    cItems=[i[j:k]for i in cItems for j,k in ((0,len(i)/2),(len(i)/2,len(i))) if len(i)>1]
    
[/code]

でcItemsの一文をforループで分解してmatlabコードに変換したいのですが、この部分のpython
のコードがtrickyに組まれておりよく分かりません。ご存知の方いらしましたらご教授ください。




提示されたコードは動作しませんでした。

とりあえず、文法で解釈して単純に展開すると以下のようになります。  
元のコードはPython2向けのようなので、Python3向けの修正も入れます。

[code]

    cItems = [8,1,9,7,4,6,3,5,0,2]
    
    cItems2 = []
    for i in cItems:
        for j,k in [(0, len(i)//2), (len(i)//2, len(i))]:
            if len(i) > 1:
                cItems2.append(i[j:k])
    
[/code]

もうちょっと展開します

[code]

    cItems = [8,1,9,7,4,6,3,5,0,2]
    
    cItems2 = []
    for i in cItems:
        if len(i) > 1:
            j = 0
            k = len(i) // 2
            cItems2.append(i[j:k])
    
            j = len(i) // 2
            k = len(i)
            cItems2.append(i[j:k])
    
[/code]

展開方法はこんな感じです。  
元コードの正しく動作するものがあれば、同じように展開して構造を理解できるかと思います。




提示されたコードは動作しませんでした。

とりあえず、文法で解釈して単純に展開すると以下のようになります。  
元のコードはPython2向けのようなので、Python3向けの修正も入れます。

[code]

    cItems = [8,1,9,7,4,6,3,5,0,2]
    
    cItems2 = []
    for i in cItems:
        for j,k in [(0, len(i)//2), (len(i)//2, len(i))]:
            if len(i) > 1:
                cItems2.append(i[j:k])
    
[/code]

もうちょっと展開します

[code]

    cItems = [8,1,9,7,4,6,3,5,0,2]
    
    cItems2 = []
    for i in cItems:
        if len(i) > 1:
            j = 0
            k = len(i) // 2
            cItems2.append(i[j:k])
    
            j = len(i) // 2
            k = len(i)
            cItems2.append(i[j:k])
    
[/code]

展開方法はこんな感じです。  
元コードの正しく動作するものがあれば、同じように展開して構造を理解できるかと思います。

