当前位置: 首页 > 面试题库 >

移动值,但在Python列表中保留顺序

邵宏达
2023-03-14
问题内容

我有一个清单

a=[1,2,3,4,5]

并希望“移动”其值,以便将其更改为

a=[2,3,4,5,1]

下一步

a=[3,4,5,1,2]

Python中是否有内置函数可以做到这一点?

还是有比这更好或更短的方法

b=[a[-1]]; b.extend(a[:-1]); a=b

问题答案:

a = [1,2,3,4,5]
>>> a.append(a.pop(0))
>>> a
[2, 3, 4, 5, 1]


但是,这很昂贵,因为它必须移动整个列表的内容,即O(n)。collections.deque如果在您的Python版本中可用,则可能是一个更好的选择,它允许在大约O(1)的时间内从任一端插入和删除对象:

>>> a = collections.deque([1,2,3,4,5])
>>> a
deque([1, 2, 3, 4, 5])
>>> a.rotate(-1)
>>> a
deque([2, 3, 4, 5, 1])

还要注意,这两种解决方案都涉及更改原始序列对象,而您的解决方案将创建一个新列表并将其分配给a。因此,如果我们这样做:

>>> c = a
>>> # rotate a

使用您的方法,c将继续引用原始的未旋转列表,而使用我的方法,它将引用更新的已 旋转 列表/双端队列。



 类似资料:
  • 问题内容: 在使用Python Pandas进行读写时,是否可以保留csv文件中列的顺序?例如,在此代码中 输出文件可能会有所不同,因为未保留列。 问题答案: 当前版本的Pandas(‘0.11.0’)中似乎存在一个错误,这意味着Matti John的答案将不起作用。如果您指定要写入文件的列,则它们将按字母顺序书写,而只是根据cols中的列表重新标记。例如,此代码: 导致以下(错误)输出: 您可以

  • 本文向大家介绍python列表list保留顺序去重的实例,包括了python列表list保留顺序去重的实例的使用技巧和注意事项,需要的朋友参考一下 常规通过迭代或set方法,都无法保证去重后的顺序问题 如下,我们可以通过列表的索引功能,对set结果进行序列化 以上这篇python列表list保留顺序去重的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我注意到JSON对象中元素的顺序不是原始顺序。 JSON列表的元素呢?他们的订单得到维护吗? 问题答案: 是的,JSON数组中元素的顺序得以保留。从RFC 7159开始-JavaScript对象表示法(JSON)数据交换格式 (重点是我的): 对象是零个或多个名称/值对的 无序 集合,其中名称是字符串,值是字符串,数字,布尔值,null,对象或数组。 数组是零个或多个值的 有序 序列。

  • 我在Android活动中有一个列表视图和该列表视图的自定义适配器。我希望能够编辑行项并立即更新该行。这工作原理,可以看到行的修改但是,在滚动我松开所有数据。这是我的Asynk任务,从那里我得到数据并更新列表行项: 我错过了什么?数据不应该是持久的吗?谢谢

  • 问题内容: 关于JPA,我有以下问题: 我可以将元素的顺序保存在java.util.List中吗?在我的应用程序中,将元素放入列表的顺序很重要,但是从数据库中获取这些集合后,顺序却不一样(符合预期)。您能告诉我解决这个问题的方法吗? PS:我放入集合中的实体中没有字段可用来订购它们。 罗森 问题答案: 在JPA 1中,有一些骇人听闻的方法可以做到这一点,但是切换到JPA 2提供程序是最容易的。您正

  • 所以我有一个递归程序,我试图生成一个字符串的所有排列。我打算将排列存储在一个名为ans的列表中。 每个当前排列都存储在用于填充ans列表的容器列表中。我怀疑,因为列表是一种引用类型,所以我可能会因为容器列表被操纵而丢失ans列表中的值?我是白痴吗