2014-02-16 72 views
3

如何同時刪除列表中的多個項目?我有一個列表:如何同時刪除列表中的多個項目

let list1 map [ -1 * ? ] reverse (n-values ((max-pxcor - round (max-pxcor/3)) + 1) [?]) 
print list1 
[-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0] 

例如,我想刪除: - 在列表中的最後4項:

[-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4] 
  • 過去的9個列表中的項目:

    [-17 -16 -15 -14 -13 -12 -11 -10 -9] 
    
  • 列表中的最後13項:

    [-17 -16 -15 -14 -13] 
    

非常感謝您的幫助。

回答

2

您可以使用sublist從列表中保留您想要的內容。

例如,刪除最後4個項目的列表:sublist list1 0 (length list1 - 4)

可以概括成一個函數這樣的:

to-report remove-last-n [ lst n ] 
    report sublist lst 0 (length lst - n) 
end 

然後你就可以使用,如:remove-last-n list1 4

結合本不幸名爲sentence,您可以刪除任意子列表:

to-report remove-sublist [ lst position1 position2 ] 
    report (sentence (sublist lst 0 position1) (sublist lst position2 length lst)) 
end 

讓你做

observer> show remove-sublist [-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0] 2 13 
observer: [-17 -16 -4 -3 -2 -1 0]