2017-02-28 69 views
0

在我的列表「A」中我有數字和'',所以我想列出一個名爲例如「b」的列表,每個列表都應該有9個數字(如果可能的話),不管它有多少「。 任何想法如何做到這一點?在列表中使用相同元素的分割列表

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

這可以通過兩個嵌套而進行循環:

>>> 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.計數器僅在找到僅包含數字的字符串之後遞增。

0

這將是值得你花時間來獲得深入到列表內涵

而且有在Python 3.x中沒有x範圍或者說範圍(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. 

雖然我不確定你的目標是什麼。你想要第二個列表(正如我想到的其餘列表)在同一個變量?所以如果你的列表中有28個元素,你會想要三個列表中的9個和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']] 

檢查以下內容: