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

在[:index]上使用动态索引进行列表切片

李康安
2023-03-14
问题内容

我需要使用负动态索引([:-index])对列表进行切片。这很容易,直到我意识到如果我的动态索引的值为0,则不返回任何项目,而不是返回整个列表。如何以索引为0时返回整个字符串的方式实现此目的?我的代码很长很复杂,但是基本上这个例子显示了这个问题:

    arr='test text'
    index=2
    print arr[:-index]
    >>'test te'    #Entire string minus 2 from the right
    index=1
    print arr[:-index]
    >>'test tex'    #Entire string minus 1 from the right
    index=0
    print arr[:-index]
    >>''           #I would like entire string minus 0 from the right

注意:我正在使用Python 2.7。


问题答案:

另一个有趣的潜在解决方案

>>> arr = [1, 2, 3]
>>> index = 0
>>> arr[:-index or None]
[1, 2, 3]
>>> index = 1
>>> arr[:-index or None]
[1, 2]

为了在诸如字符串之类的不可变序列类型上获得更高的性能,可以在切片操作 之前 检查index的值来避免在index为0的情况下完全切片序列。

这里是要测试性能的三个功能:

def shashank1(seq, index):
    return seq[:-index or None]

def shashank2(seq, index):
    return index and seq[:-index] or seq

def shashank3(seq, index):
    return seq[:-index] if index else seq

后两者应当是 在指数是0的情况下更快,但也可以是在其它情况下更慢(或更快)。

更新的基准代码: http :
//repl.it/oA5

注意:结果在很大程度上取决于Python的实现。



 类似资料:
  • 问题内容: 我已经开始测试Firebase,但我想不出关于索引的一件事。我正在根据所读内容(Firebase数据结构)创建一个结构,类似于带有用户和组的示例。JSON树如下所示: 而且我正在努力为父母生小孩-就像Firebase示例中的组中的成员一样。我正在使用以下方法在iOS应用程序中执行此操作: 当前用户的ID 在哪里。这可以正常工作,但唯一的问题仍然是: 使用未指定的索引。考虑在/ babi

  • 我有一个dataframe,。 我想选择中不在列表中的所有索引,

  • 我有一个多索引数据框,看起来像 uid tid文本 abc x t1 bcd y t2 uid 和 tid 是索引。我有一个 uid 列表,并希望获取与该列表中的 uid 相对应的行,但保留第 2 级索引值 (tid)。我想在不运行任何显式循环的情况下执行此操作。这可能吗?

  • 问题内容: 我有一个数据框。 我想选择在所有指数是 不是 在列表中, 现在,我使用列表理解来创建所需的标签以进行切片。 工作正常,但如果我经常需要这样做可能会很笨拙。 有一个更好的方法吗? 问题答案: 在索引上使用并反转布尔索引以执行标签选择:

  • 问题内容: 我正在遍历Go语言之旅中的练习,但遇到了我无法弄清的障碍。我在做这个错误: 这是我的代码: 对于我一生,我找不到问题! 问题答案: 切片 对于字符串,数组,指向数组的指针或切片a,主表达式 a [低:高] 构造一个子字符串或切片。索引表达式low和high选择哪些元素出现在结果中。结果的索引从0开始,长度等于高-低。 对于数组或字符串,索引low和high必须满足0 <= low <=

  • 我已经更新了dplyr(现在是0.7.1),我的很多旧代码都不能用了,因为mutate_each已经被弃用了。我曾经用mutate_each做类似这样的事情(代码如下),使用列索引。我会在数百个专栏中这样做。而我就是搞不清楚如何用mutate_at正确使用vars参数。我看到的所有例子都使用了列名...我不想这么做。我确信这是一个简单的答案,但是我已经花了太多的时间试图弄明白它,并且将非常感谢一些