2017-06-04 117 views
0

我試圖根據用戶的數據創建列表。這個數據是一個16道問題調查,所以我想把數據分成16個答案的列表,或者是一個列表,只是我的代碼如下圖所示。基於兩個條件創建列表

studentanswers = [] 
contains_data = False 
temp = [] 
for i in answers: 
if i == 'No data available': 
    if contains_data: 
     studentanswers.append(temp) 
     temp = [] 
     studentanswers.append([i]) 
     contains_data = False 
    else: 
     studentanswers.append([i]) 
else: 
    contains_data = True 
    if len(temp) < 16: 
     temp.append(i) 
    else: 
     studentanswers.append(temp) 
     temp = [] 
     contains_data = False 

但是,當我迭代時,數據得到正確的計數,並且一些數據被分配給錯誤的用戶。例如,對於學生1個問題16將成爲問題1學生2

+0

目前還不清楚你問什麼。請分享示例輸入和預期輸出。 – janos

回答

0

嘗試沿着這些路線的東西:

while answers: 
    if answers[0] = 'No data available': 
     studentanswers.append(['No data available']) 
     answers = answers[1:] 
    else: 
     studentanswers.append(answers[:16]) 
     answers = answers[16:] 
+0

此解決方案僅在出現「無數據可用」時劃分數據。當「無數據可用」出現時,是否有辦法創建一個列表,並且在列表中有16個項目後會創建一個列表? – fcb434

+0

它還會在'沒有可用數據'出現時創建一個列表。看看這行 - studentanswers.append(answers [:16]) –

+0

我在結束時出現了一些錯誤,我將它們清理乾淨了,這個工作很完美,謝謝! – fcb434

-1

你的問題不清楚,如果我這樣做是正確,你想要的清單每個學生的答案。

如果是這樣的話,那麼這應該足夠了:

studentanswers = list() 
for x in range(len(answers)/16): 
    sudentsanswers.append(list(answers[y*16:(y+1)*16]) 

這裏假設你有每個學生16個回答。

編輯,我剛纔看到你的其他評論,這將工作:

studentanswers = list() 
studentanswers.append(list()) 
c = int(0) 
for x in range(len(answers)): 
    if (c<16 && x != "No data available"): 
     studentanswers[len(studentanswers)-1].append(x) 
     c+=1 
    else: 
     c=0 
     studentanswers.append(list()) 
     studentanswers[len(studentanswers)-1].append(x) 
     if x == "No data available": 
      studentanswers.append(list())