サブリストの複数に要素値のリストによってパイソン

隣人が、同時に元のリストのスライスでない場合1.元のリストは、ソートされます。

cutList1 DEF(orList):

orList.sort()#リストの並べ替え。大小規模デフォルト
newList = []#空リスト

開始点はn = 0#各スライス
範囲におけるK(LEN(orList))のために:
orList [K] == orList [-1] IF#行による順序上、場合orList [k]は、ループ終了できスライスした後、リストの最後の要素の値に等しい
:(orList [N])newList.append # 最後orList [K]から取られた
BREAK位出口ループ
orList [K] = orList場合が! [K + 1]:#行順を追って、不等隣人上、それはサブリストを切断するときことを意味する
のsubList = orList [N:K + 1]#個のスライス
newList.append(のsubList)
N-K + 1 =#。 nは、各スライスの開始点記憶する
復帰newList

myList1 = [4,2 ,. 1、2、2、。1 ,. 1 ,. 5 ,. 6 ,. 5 ,. 4]
プリント(cutList1(myList1))#[1 ,. 1、 1]、[2]、[2,2]、[4,4]、[5,5]、[6]

新しいリストの各要素の番号に続く、元の番号がリストの各要素に対して計算される最初の重量のために、2セットは、直接生成され、最終的に大規模なリストに含まれています
cutList2 DEF(orList):

newSeqAfterSet = SET(orList)SET番号の重複除外。デフォルト大小に
newList = []
K用newSeqAfterSetで:
kCount = orList.count(K)#要素リスト内の各要素の数を数える
KLIST = [K] * kCount#は新しいリストを生成
newList.append(KLISTを)
newListを返します
 
myList2 = [4、2、1、2、2、1、1、5、6、5、4] 
プリント(cutList2(myList2))#[1、1,1]、[2,2]、[2]、 [4,4]、[5,5]、[6]
リストの最初の要素の後に3が一時変数に、取り出し、その後、元のリストを循環し、同じ値をとるために、この要素は、この動作サイクル後に除去されます...
cutList3 DEF(orList):

除去するCOPYLIST = DeepCopy(orList)#コピーのリスト要素、元のリストの整合性を保持

newList = []
しばらく1:
コピー#whileループは、時空のリストで終了します。COPYLIST == []は、以下の場合に
ブレーク

#は、たびに、一方ループfirstElement値を更新し、そしてeleList空にリセットされ
、最初の要素のfirstElement = COPYLIST [0]#コピーリスト
eleList = []#サブリスト
orListでELEのために:
:ELE == firstElement IF
eleList。 APPEND(ELE)
copyList.remove(ELE)#は、要素を削除します。ループのために、すべての要素の元のリストと最初の要素に等しいが引き出された完了後
位これらの要素は、コピーリストから削除され

newList.append(eleList)

リターンnewList

[myList3 = 4,2 ,. 1、2、2、 1、1、5、6、5、4]
プリント(cutList3(myList3))#[[4 ,. 4]、[2,2]、[2]、[1 ,. 1 ,. 1]、[5 ,. 5]、[6]

4としては、上記から分かる
  4.1方法三つの要素が表示されたときに1とリストが並べ替え2新たにソート順に従った処理を介して生成される
  元の順序付けられたリストに4.2方法1リードディープコピー使用する前に進むべき壊れ環、ある
  ビューの効率の点から4.3、方法2は、最短の実行時間でなければなりません。これは後になるまで、見ることが固有ではありません...
 

おすすめ

転載: www.cnblogs.com/lipx9527/p/11071427.html