2010-09-09 17 views
1

所以我列出 mList = [「列表1」,「列表2」,「list8」,「list99」]乾淨的方法來獲取列表中的條目,並將其設置爲第一個條目

我想選擇在該列表中的值說'list8'並且使其成爲列表中的第一個條目 ['list2','list1','list8','list99']

如何重新排序一個條目 所有我能在那一刻想到的是 -get指數 -remove該條目 -insert(0,進入)

什麼是乾淨的方式來做到這一點?

歡呼聲..

+0

您的問題似乎包含錯誤。不應該預期的結果是'['list8','list1','list2','list99']'? – 2010-09-09 20:44:12

+0

是的,我的錯誤 – 2010-09-09 20:54:02

回答

0

不知道我理解的問題的權利,但這種方法可能工作

mList = ['list1', 'list2', 'list8', 'list99'] 
idx = 2 
mlist.insert(0, mlist.pop(idx)) 

將產生:

['list8', 'list1', 'list2', 'list99'] 

這裏是另一種方式:

mList = ['list1', 'list2', 'list8', 'list99'] 
value = 'list8'  
mlist.remove(value) 
mlist.insert(0, value) 
2

您的應用蟑螂是合理的,但我會用該值直接刪除,而不是首先找到索引,然後刪除:

mList.remove('list2') 
mList.insert(0, 'list2') 

需要注意的是,這些操作都是名單上效率低下。追加到列表的末尾比在開頭插入更有效。您可能想要使用不同的數據結構,如鏈接列表。另一種方法是顛倒你存儲元素的順序。

+0

不知道直接刪除,這是更好的,th列表將只有<100條目 – 2010-09-09 20:54:51

+0

你在Python中使用鏈表的建議很有趣。一個人會怎麼做? – jathanism 2010-09-09 20:58:20

+0

@jathanism:http://stackoverflow.com/questions/2154946/python-linked-list-o1-insert-remove – 2010-09-09 21:16:40

0
def move_up(val, lst): 
    lst.insert(0, lst.pop(lst.index(val))) 
move_up('list8', mList) 
2

其他人已經發布瞭解決方案,保持不移動到前面的項目的順序。如果你不關心這個問題,只需將第一個項目換成你想要移動到前面的項目就可以了。

mList = ['list1', 'list2', 'list8', 'list99'] 

i = mList.index('list8') 
mList[0], mList[i] = mList[i], mList[0] 

print mList # ['list8', 'list2', 'list1', 'list99'] 
相關問題