2010-09-09 45 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'] 
相关问题