1

私はこの問題に取り組んでいますが、2番目の部分がわかりません。逆リストを使用してみましたが、計画どおりに機能しませんでした。

リスト L (例: [1,2,3,4]) が与えられた場合、次のネストされたリストを生成するプログラムを作成します。

  1. L1 = [[1],[1,2],[1,2,3],[1,2,3,4]],
  2. L2 = [[4],[3,4],[2,3,4],[1,2,3,4]].

私がこれまでに持っている私のコード:

mylist=[,1,2,3,4] 
print("Orginal list L=",mylist) 
n=len(mylist) 
l1=[] 
l2=[] 


for x in range(1,n+1,1):
    l1.append(mylist[0:x]) 
print("L1=",l1) #prints final product of l1


mylist.reverse() #this is where i get messed up
for x in range(1,n+1,1): 
    l2.append(mylist[0:x]) 
print("L2=",l2) 
4

4 に答える 4

2

Python で負のインデックスを使用できます。

マイリスト[-1] -> 4

それを考えると、これはうまくいきます:

mylist=[1,2,3,4] 
print("Orginal list L=", mylist)
n=len(mylist) 
l1=[] 
l2=[] 

for i in range(1, n+1):
    l1.append(mylist[0:i])
    l2.append(mylist[-i:])
print("L1=", l1)
print("L2=", l2)
于 2012-10-02T03:30:52.753 に答える
1
lst = [1,2,3,4]
[lst[0:i] for i in range(1,5)]
[lst[-i:] for i in range(1,5)]
于 2012-10-02T03:37:16.693 に答える
1

男、私はリストの理解が大好きです。

L1 = [L[:i+1] for i in xrange(len(L))]
L2 = [L[-i-1:] for i in xrange(len(L))]

リスト内包表記は、リストを作成する簡単な方法と考えることができます。通常、自分for x in y: ... list.append(z)が .

于 2012-10-02T03:34:16.057 に答える
0

リストを逆にして2番目のループを変更しないでください

for x in range(n-1,-1,-1): 
    l2.append(mylist[x:]) 
于 2012-10-02T03:30:38.387 に答える