2012-03-16 144 views
0

我在這裏有一個奇怪的問題。Python:從對象中刪除特定行

我正在使用iperf來測試設備和服務器之間的性能。我通過SSH獲得了此測試的結果,然後我想使用已經創建的解析器解析值。但是,結果頂部有幾行(我讀入行的對象),我不想進入解析器。我知道每次需要從頂部移除多少行。有什麼辦法從列表中刪除特定的條目嗎?像這樣在僞巨蟒

print list 
["line1","line2","line3","line4"] 
list = list.drop([0 - 1]) 
print list 
["line3","line4"] 

如果有人知道任何我可以使用我真的很感激你幫我。我能想到的唯一的事情就是編寫一個循環來遍歷並創建一個新列表,僅僅放入我需要的東西。無論如何,thanlks!

邁克爾

回答

1

片:

l = ["line1","line2","line3","line4"] 
print l[2:] # print from 2nd element (including) onwards 
["line3","line4"] 

片語法[from(included):to(excluded):step]。每個部分都是可選的。因此,您可以編寫[:]以獲取整個列表(或針對該問題的任何迭代 - stringtuple作爲內置插件的示例)。您也可以使用負數索引,因此[:-2]表示從開始到倒數第二個元素。你也可以倒退,[::-1]意味着全部,但以相反的順序。

此外,不要使用list作爲變量名稱。它覆蓋了內置的列表類。

+0

別不用擔心,這只是例子而已。謝謝 – 2012-03-16 14:58:00

1

這是slice運營商是什麼:

>>> before = [1,2,3,4] 
>>> after = before[2:] 
>>> print after 
[3, 4] 

在這種情況下,before[2:]說:「給我的名單before,的元素開始元件2和一路直到結束。'

(也 - 不使用保留字像listdict作爲變量名 - 這樣做可能會導致混淆錯誤)

+0

感謝,名單是例如僅 – 2012-03-16 14:58:38

1

您可以使用slices爲:

>>> l = ["line1","line2","line3","line4"] # don't use "list" as variable name, it's a built-in. 
>>> print l[2:] # to discard items up to some point, specify a starting index and no stop point. 
['line3', 'line4'] 
>>> print l[:1] + l[3:] # to drop items "in the middle", join two slices. 
['line1', 'line4'] 
1

爲什麼不使用基本列表片?是這樣的:

list = list[3:] #everything from the 3 position to the end 
1

你想刪除該

del list[:2] 
1

您可以使用 「德爾」 statment刪除特定條目:

del(list[0]) # remove entry 0 
del(list[0:2]) # remove entries 0 and 1