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

列表中连续元素之间的区别

东郭翰音
2023-03-14
问题内容

我有一个列表,我想找到连续元素之间的区别:

a = [0, 4, 10, 100]
find_diff(a)
>>> [4,6,90]

您将如何编码find_diff()函数?我可以使用“ for”迭代器对此进行编码,但是我敢肯定,有一种非常简单的方法可以使用一个简单的内衬进行编码。


问题答案:

您可以利用enumeratezip并列出理解:

>>> a = [0, 4, 10, 100]

# basic enumerate without condition:
>>> [x - a[i - 1] for i, x in enumerate(a)][1:]
[4, 6, 90]

# enumerate with conditional inside the list comprehension:
>>> [x - a[i - 1] for i, x in enumerate(a) if i > 0]
[4, 6, 90]

# the zip version seems more concise and elegant:
>>> [t - s for s, t in zip(a, a[1:])]
[4, 6, 90]

性能方面,似乎并没有太大的差异:

In [5]: %timeit [x - a[i - 1] for i, x in enumerate(a)][1:]
1000000 loops, best of 3: 1.34 µs per loop

In [6]: %timeit [x - a[i - 1] for i, x in enumerate(a) if i > 0]
1000000 loops, best of 3: 1.11 µs per loop

In [7]: %timeit [t - s for s, t in zip(a, a[1:])]
1000000 loops, best of 3: 1.1 µs per loop


 类似资料:
  • 本文向大家介绍连续和非连续内存分配之间的区别,包括了连续和非连续内存分配之间的区别的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们将了解连续和非连续内存分配之间的区别- 连续内存分配 在这种分配类型中,连续的内存块被分配给一个文件/进程。 与不连续的内存相比,它执行得更快。 易于通过操作系统进行控制。 开销最小,因为在执行进程时地址转换不多。 连续内存分配中存在内部碎片。 有不同类型的

  • 问题内容: 我知道可以将一个列表连接成一个长字符串,如下所示: 显然,这将输出: 但是,我想做的就是简单地将列表中的第一个和第二个字符串连接起来,然后连接第三个和第四个字符串,依此类推。简而言之,从上面的示例中取而代之的是: 有没有简单的方法可以做到这一点?我可能还应该提到,列表中字符串的长度以及列表中字符串的数量都是不可预测的,尽管字符串的数量始终是偶数。因此原始列表也可能是: 问题答案: 您可

  • 问题内容: 我试图确定一个大列表是否具有相同的连续元素。 所以说: 在这种情况下,我将返回true,因为存在两个连续的元素和,它们的值相同。 我知道可以通过某种形式的循环组合来完成此操作,但我想知道是否有更有效的方法来执行此操作? 问题答案: 您可以在 *中使用和生成器表达式: 或者,您可以使用,以一种更Python化的方式来检查列表中是否至少有两个相等的连续项: 注意:如果要检查是否有两个以上的

  • 问题内容: 我已经看到在Python中实际上有两种(也许更多)串联列表的方法:一种方法是使用extend()方法: 另一个使用plus(+)运算符: 现在,我想知道:这两个选项中的哪一个是列表连接的“ pythonic”方式,并且两者之间有区别(我查看了Python的官方教程,但找不到有关此主题的任何信息)。 问题答案: 在字节码级别上的唯一区别是,该方式涉及函数调用,在Python中该函数比。调

  • 问题内容: 给定一个数字列表,人们如何发现第()个元素与其第()个元素之间的差异? 使用表达式还是列表理解更好? 例如: 给定一个列表,我们的目标是要找到一个列表,因为,等等。 问题答案:

  • {4,5,1,5,7,6,8,4,1},答案是5。 对于第一个例子,子数组{5,3,1,4,2}排序后可以形成连续序列1,2,3,4,5,它们是最长的。 对于第二个示例,子数组{5,7,6,8,4}是结果子数组。