2017-02-28 10 views
0

私のリストには "A"がありますので、 "b"というリストのリストを作りたいと思います。 )、それがどれくらいあっても。 どうすればいいですか?等価な要素を持つ小さなリストの分割リスト

A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17'] 
B = [ ['1', '3, '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17'] ] 
+0

なぜ私の最初の大学のプログラミングコースのようなこの音?あなたは配列を繰り返して、ブレークを探しましたか? – TGarrett

+0

これまでに何を試しましたか? –

答えて

0

これはあなたを助ける:

>>> a = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ',  '5', '17'] 
>>> b=[a[i:i+9] for i in xrange(0,len(a),9)] 
>>> b 
[['1', '3', '4', '5', '7', '8', '9', ' ', '13'], ['16', '3', ' ', '5', '17']] 
>>> 
0

ループしながら、これは、ネストされた2で行うことができます:Aが空と内側の間ではありませんしながら、

>>> A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17'] 
>>> B = [] 
>>> while A: 
... L = [] 
... c = 0 
... while A and c < 9: 
...  L.append(A.pop(0)) 
...  if L[-1].isdigit(): 
...   c += 1 
... B.append(L) 
... 
>>> B 
[['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17']] 

外側のループAは空ではなく、現在のサブリストに付加されている数字のみの文字列の数は9より小さい。カウンタは、数字のみからなる文字列が見つかった場合にのみインクリメントされる。 (3.xでは)

0

深いリストの内包表記に

を得るためにあなたの時間の価値があるだろうとNOはxrangeは、Python 3.xのではありませんか、むしろ範囲はxrangeのは、Python 2.xの中でやったまさにん

A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17'] 
B = [i for i in A[0:9]] #is cleaner. 

あなたの目標は正確にはわかりませんが、 2番目のリスト(私が考えている残りのリスト)を同じ変数に入れたいですか?あなたのリストに28個の要素があったら、9個の3個のリストと1個の1個のリストが必要でしょうか?

0

これはちょっと汚い解決策ですが、isdigitの部分とポップを確認する必要があると思います。次

def take(lst, n): 
    if not lst: 
     return ValueError("Empty list, please check the list.") 
    items = list(lst) 
    new_list = [] 
    count = 0 
    while items: 
     item = items.pop(0) 
     new_list.append(item) 
     if item.isdigit(): 
      count += 1 
     if count >= n: 
      yield new_list 
      new_list = [] 
      count = 0 
    if new_list: 
     yield new_list 


A = ['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16', '3', ' ', '5', '17'] 
B = [ii for ii in take(A, 9)] 
#[['1', '3', '4', '5', '7', '8', '9', ' ', '13', '16'], ['3', ' ', '5', '17']] 

チェック:

関連する問題