2012-10-02 22 views
2

因此,對於部分課程,我有一個來自txt文件的給定輸入。基本上,輸入字符串我可以給出是一樣的東西如何在python中刪除列表的後端?

listy = ["Miko's Lounge", '41.2', '56.7', '99th Ave, NY', '3', '4', '5', '2'] 

我需要這方面的投入做的是刪除地址,並把數字在列表的末尾到自己的名單列表內,像這樣。

["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2'] ] 

我知道我可以使用listy.pop(3)刪除地址。但字符串末尾的數字可能會有所不同!這些代表星級,有些地方比其他地方有更多的星級。是否可以從列表中的某個特定點刪除所有索引,如函數slice(),類?

我一直在嘗試的是使用for循環使用range函數,但它似乎不能正常工作(或我的期望值)。

listy = ['1', '2', '3', '4', '5'] 


for i in range(2 , len(listy)-1): 
    listy.pop(i) 

print listy 

什麼我得到作爲輸出:

['1', '2', '4'] 

當我試圖得到的東西線沿線的更多:

['1', '2'] 

爲什麼在隨機'4'那裏?我不明白這個範圍的東西!我想用java簡單的for循環-_-

+1

'家庭作業'標籤已被[棄用](http://meta.stackexchange。COM /問題/ 147100 /的-功課,標籤是 - 現在已經正式棄用?CB = 1)。就目前而言,沒有它,你的問題是有幫助的,所以我將它刪除。 – newfurniturey

+1

您的刪除循環內項目的方法是一個問題,因爲索引不斷變化。這就是爲什麼你會得到奇怪的結果。解決這個問題的一種方法是從後面刪除項目,但是python有一個更簡單的方法來刪除列表的一部分。 –

+0

你的第二個例子可以通過執行'del listy [2:]'來從索引2(第三個元素)開始刪除。 – nneonneo

回答

12

您可以使用list slicing做到這一點很容易:

>>> listy[:3]+[listy[4:]] 
["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2']] 
0

試一下:

listy = ["Miko's Lounge", '41.2', '56.7', '99th Ave, NY', '3', '4', '5', '2'] 
l = listy[:3] 
l.append(listy[4:]) 
l 

爲您提供:

["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2']] 
+0

我會像其他答案一樣執行'l = listy [:3] + [listy [4:]]'; 'append'是多餘的。 – nneonneo

+0

@nneonneo''append()''同樣有效。也就是說,這個答案基本上只是我的一個重複。 –

0

您應該已經閱讀了列表中的文檔: http://docs.python.org/tutorial/datastructures.html

但是,我沒有看到您要查找的語法。

我想你想要的是兩部分指數的語法,它取代了普通的容器方法「片」

方式蟒蛇地址的子列表與

myListInstance[start:end] //<-- note the colon 

的更多信息:

http://docs.python.org/tutorial/datastructures.html#the-del-statement

+0

[@lattyware](http://stackoverflow.com/a/12683599/401735),下面有更好的答案;我花了很長時間試圖記住細節。 –

-1

首先,您的清單listy有五個元素。 刪除索引2元素後,剩下4個,len(listy)返回4,因此listy [3]被刪除。因此你有[1,2,4]。 我希望你已經理解了結果如何。 修改

for i in range(3): 
    listy.pop(len(listy)-1) 
print listy