Python 如何将值列表转换为列表中的索引/切片?

Python 如何将值列表转换为列表中的索引/切片?,python,Python,我有一个包含许多元素的列表,其中每个元素表示一个输入文件,我希望使用另一个列表中包含的值动态地将其子集。例如,我有一些动态生成列表的代码,我想使用这些列表定义子样本,例如 [0, 1, 2, 3] 及 但是我想使用这些列表的开始和结束元素来定义一个应用于另一个列表的切片范围。换句话说,我希望将上面的两个列表转换为如下所示的片段 [0:3] 和[1:4] 但我不知道如何做到这一点,老实说,我甚至不知道用什么术语来搜索这个。我曾尝试在堆栈溢出中搜索“从列表动态生成切片”甚至“动态生成数据切片”(我

我有一个包含许多元素的列表,其中每个元素表示一个输入文件,我希望使用另一个列表中包含的值动态地将其子集。例如,我有一些动态生成列表的代码,我想使用这些列表定义子样本,例如

[0, 1, 2, 3]

但是我想使用这些列表的开始和结束元素来定义一个应用于另一个列表的切片范围。换句话说,我希望将上面的两个列表转换为如下所示的片段

[0:3]
[1:4]

但我不知道如何做到这一点,老实说,我甚至不知道用什么术语来搜索这个。我曾尝试在堆栈溢出中搜索“从列表动态生成切片”甚至“动态生成数据切片”(我可以想到的一种变体),但没有成功

以下是更多细节:

thislist = ['2019/12/26/fjjd', '2019/12/26/defg', '2020/01/09/qpfd', '2020/01/09/tosf', '2020/01/16/zpqr', '2020/01/15/zpqr', '2020/01/15/juwi']
冰在哪里
[0:3]
并从如下列表中生成
[0,1,2,3]

thislist[someIndexSlice] = ['2019/12/26/fjjd', '2019/12/26/defg', '2020/01/09/qpfd', '2020/01/09/tosf']
因此,我的问题是:

  • 我怎样才能做到这一点
  • 我应该用什么样的术语来描述我要完成的任务
  • 谢谢

    您可以使用内置功能:

    >>> lst = [0, 1, 2, 3]
    >>> as_slice = slice(lst[0], lst[-1], lst[1] - lst[0])
    >>> as_slice
    slice(0, 3, 1)        # which is same as [0:3]
    
    然后检查它是否正常工作:

    >>> test = [1, 5, 3, 7, 8]
    >>> test[as_slice]
    [1, 5, 3]
    >>> test[0:3]
    [1, 5, 3]
    
    注意:
    此实现假定您的
    列表是等距的,并且已排序。

    问题是为什么需要将它们转换为片?你能不能用这些数字为另一个列表编制索引?既然您标记了熊猫,您就可以使用
    df.loc[[0,1,2,3]]
    。您想要什么实际输出<代码>[0:3]
    本身就是一个语法错误。这是一个好主意,我确实用pandas标记了它,但在仔细查看了我拥有的数据结构之后,我可以用一个数据帧来完成,但它很麻烦。我已经取下熊猫牌了。
    >>> test = [1, 5, 3, 7, 8]
    >>> test[as_slice]
    [1, 5, 3]
    >>> test[0:3]
    [1, 5, 3]