【问题标题】:What's the pythonic way to repeat first and last element of a list? [closed]重复列表的第一个和最后一个元素的pythonic方法是什么? [关闭]
【发布时间】:2020-12-18 15:42:22
【问题描述】:

如果我有一个像[1, 2, 3, 4, 5] 这样的列表,那么什么被认为是一种更pythonic 的方式(如果这还不是)只重复第一个和最后一个元素并获得[1, 1, 2, 3, 4, 5, 5]

我现在正在做的是:

a = [1, 2, 3, 4, 5]
b = [a[0], *a, a[-1]]

【问题讨论】:

  • 取决于你如何保存specification os 什么数字应该加倍,三倍,..
  • [a[0]] + a + [a[-1]] 怎么样?
  • 对于长列表 (~1M),您的解决方案是最快的。坚持下去。
  • 即时更改您的问题是不公平的。显然,原始问题和新问题需要完全不同的解决方案。
  • 好的,我会为此创建一个新问题,抱歉

标签: python python-3.x list list-manipulation


【解决方案1】:

我会执行以下操作,它只是将三个单独的列表粘合在一起:

>>> a = [1, 2, 3, 4, 5]
>>> a[:1] + a + a[-1:]
[1, 1, 2, 3, 4, 5, 5]

【讨论】:

  • 这是否被认为更具 Python 风格?我的意思是,我的意思很明确,它的字面意思是“我正在创建一个包含 a 的第一个元素、a 的每个元素和 a 的最后一个元素的列表”,而使用连接它说“我正在连接一个仅包含的列表a 的第一个元素,列表 a 本身和仅包含 a" 的最后一个元素的列表,我猜这有点复杂。另外,性能方面,哪个更快?
  • “pythonic”没有客观的衡量标准。主观上,我发现这种方法易于阅读和理解,并且它仅适用于列表和子列表,而不是尝试从单个元素构造一个新列表(即a[:1] 而不是[a[0]])。在性能方面,您应该衡量所提供的方法并找出最适合您的用例的方法。如果您需要将重复扩展到一个元素之外,请注意这种方法很容易适应。
  • 我明白你的意思,确实将问题扩展到超过 2 个索引以重复(或重复超过两次)仅使用列表和子列表会更容易。我会调查更多有关性能的信息,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多