2012-03-16 146 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