【问题标题】:clean method to get an entry in a list and set it as the first entryclean 方法获取列表中的条目并将其设置为第一个条目
【发布时间】:2010-09-09 20:36:47
【问题描述】:

所以我列出 mList = ['list1', 'list2', 'list8', 'list99']

我想在该列表中选择一个值,例如“list8”并让它成为列表中的第一个条目 ['list2', 'list1', 'list8', 'list99']

如何仅重新排序这一项 我现在能想到的只有 - 获取索引 -删除该条目 -插入(0,条目)

什么是干净的方法?

干杯..

【问题讨论】:

  • 您的问题似乎包含错误。预期的结果不应该是['list8', 'list1', 'list2', 'list99']吗?

标签: python list


【解决方案1】:

您的方法是合理的,但我会直接在值上使用 remove,而不是先找到索引然后删除:

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

请注意,这些操作在列表上效率低下。追加到列表末尾比在开头插入更有效。您可能想要使用不同的数据结构,例如链表。另一种选择是颠倒存储元素的顺序。

【讨论】:

【解决方案2】:

其他人已经发布了保持未移到前面的项目顺序的解决方案。如果您不关心这一点,只需将第一个项目与您想要移到前面的项目交换会更快。

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

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

print mList   # ['list8', 'list2', 'list1', 'list99']

【讨论】:

    【解决方案3】:

    不确定我是否正确理解了这个问题,但这种方法可能有效

    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)
    

    【讨论】:

      【解决方案4】:
      def move_up(val, lst):
          lst.insert(0, lst.pop(lst.index(val)))
      move_up('list8', mList)
      

      【讨论】:

        猜你喜欢
        • 2013-08-15
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        相关资源
        最近更新 更多