如何在列表中将元素移动到python中

 RvJ手机用户2997047695f 发布于 2023-02-13 15:03

我有一个名为values的字符串列表,我想让列表中的元素成为最后一个元素.例如,如果我有字符串:

['string1', 'string2', 'string3']

我希望string2成为最后一个元素:

['string1', 'string3', 'string2']

当我的列表不包含string2时,也可能有一个实例.是否有捷径可寻?这是我到目前为止:

if 'string2' in values:
    for i in values:
        #remove string2 and append to end

mgilson.. 20

>>> lst = ['string1', 'string2', 'string3']
>>> lst.append(lst.pop(lst.index('string2')))
>>> lst
['string1', 'string3', 'string2']

我们查找'string2'索引,从列表中弹出该索引,然后将其附加到列表中.

或许更为例外的免费方式是首先将您正在寻找的东西添加到列表的末尾(毕竟,您已经知道它是什么).然后从列表中删除该字符串的第一个实例:

>>> lst = ['string1', 'string2', 'string3']
>>> lst.append('string2')
>>> del lst[lst.index('string2')]  # Equivalent to lst.remove('string2')
>>> lst
['string1', 'string3', 'string2']


John La Rooy.. 9

sort对于此操作是O(n),因此它与没有2或3函数查找的其他答案具有相同的时间复杂度.如果'string2'不在列表中,则没有错误

>>> lst = ['string1', 'string2', 'string3']
>>> lst.sort(key='string2'.__eq__)
>>> lst
['string1', 'string3', 'string2']

您可以使用相同的技巧将所有"string2"移动到列表的末尾.或者更一般地说是整个类别,例如将所有内容从string列表末尾移动到列表的末尾:

lst.sort(key=lambda s:s.startswith('string'))

†Timsort认为这是3"跑步"的最大化,而timsort是稳定的

3 个回答
  • >>> lst = ['string1', 'string2', 'string3']
    >>> lst.append(lst.pop(lst.index('string2')))
    >>> lst
    ['string1', 'string3', 'string2']
    

    我们查找'string2'索引,从列表中弹出该索引,然后将其附加到列表中.

    或许更为例外的免费方式是首先将您正在寻找的东西添加到列表的末尾(毕竟,您已经知道它是什么).然后从列表中删除该字符串的第一个实例:

    >>> lst = ['string1', 'string2', 'string3']
    >>> lst.append('string2')
    >>> del lst[lst.index('string2')]  # Equivalent to lst.remove('string2')
    >>> lst
    ['string1', 'string3', 'string2']
    

    2023-02-13 15:05 回答
  • lst = ['string1', 'string2', 'string3']
    lst.append('string2')
    lst.remove('string2')     # -> ['string1', 'string3', 'string2']
    

    (mgilson提出了一个很好的观点 - 如果你先将值添加到列表中,总会有一个要删除)

    2023-02-13 15:05 回答
  • sort对于此操作是O(n),因此它与没有2或3函数查找的其他答案具有相同的时间复杂度.如果'string2'不在列表中,则没有错误

    >>> lst = ['string1', 'string2', 'string3']
    >>> lst.sort(key='string2'.__eq__)
    >>> lst
    ['string1', 'string3', 'string2']
    

    您可以使用相同的技巧将所有"string2"移动到列表的末尾.或者更一般地说是整个类别,例如将所有内容从string列表末尾移动到列表的末尾:

    lst.sort(key=lambda s:s.startswith('string'))
    

    †Timsort认为这是3"跑步"的最大化,而timsort是稳定的

    2023-02-13 15:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有