【问题标题】:assign the result of an list operation to var将列表操作的结果分配给 var
【发布时间】:2011-12-02 16:38:04
【问题描述】:

在python中,

我该怎么做这样的事情

a = ["pera", "uva", "maca", "saladamista"]
b = a.reverse()

但没有将反向列表分配给a

【问题讨论】:

  • 那个 sn-p 没有“将反向列表分配给 a”,它调用列表的 reverse 方法,该方法改变了 a 所指的相同列表对象。 Confusing variables and objects 简单但有害。
  • 不,因为使用 [:],b 是 a 的 副本,而不是对它的 引用,所以你调用 b 的反向,在使其值与 a 相同之后。
  • @FrederikCreemers:我不是在评论 sinan 的建议(这不是评论,而是顺便说一句的答案),而是在评论 OP 的困惑声明。

标签: python


【解决方案1】:

先复制列表,再反向复制:

a = ["pera", "uva", "maca", "saladamista"]
b = a[:]
b.reverse()

或使用“火星笑脸”:

b = a[::-1]

编辑:如果有人对时间感兴趣,他们是:

In [1]: a = range(100000)

In [2]: %timeit b = a[:]; b.reverse()
1000 loops, best of 3: 436 us per loop

In [3]: %timeit b = a[::-1]          
1000 loops, best of 3: 414 us per loop

In [4]: %timeit b = list(reversed(a))
1000 loops, best of 3: 823 us per loop

【讨论】:

  • 这个“火星笑脸”是如何工作的?你有这个概念的链接吗?谢谢你的回答。我一直在寻找一种简单的方法来做到这一点.. python 程序员喜欢和最易读的方式。
  • @Pabluez:看看this answer by Alex Martelli
【解决方案2】:

试试这个:

b = list(reversed(a))

【讨论】:

  • 如果您希望 b 成为列表,则应为 list(reversed(a))
  • @SvenMarnach:很好 - 我也注意到了 :)
猜你喜欢
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
相关资源
最近更新 更多