在Python中使用变量切片列表

rob*_*ntw 36 python list slice

给出一个清单

a = range(10)
Run Code Online (Sandbox Code Playgroud)

您可以使用诸如的语句对其进行切片

a[1]
a[2:4]
Run Code Online (Sandbox Code Playgroud)

但是,我想基于代码中其他位置设置的变量来执行此操作.我可以轻松地为第一个做这个

i = 1
a[i]
Run Code Online (Sandbox Code Playgroud)

但是我如何为另一个做这个呢?我试过用列表编制索引:

i = [2, 3, 4]
a[i]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我也尝试过使用字符串:

i = "2:4"
a[i]
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.

这可能吗?

mat*_*ata 75

slice()是为了什么:

a = range(10)
s = slice(2,4)
print a[s]
Run Code Online (Sandbox Code Playgroud)

这与使用相同a[2:4].


Mar*_*ers 9

为什么它必须是一个变量?只需使用两个变量:

i, j = 2, 4
a[i:j]
Run Code Online (Sandbox Code Playgroud)

如果它确实需要是一个变量,你可以使用元组.

  • 我的用例涉及一些详细的 html 解析,试图找到这个 html 表中的最后一个元素。代码看起来像 `last_row = list(reversed(parsed_html_rows[-2:-1]))` 在代码审查中,我们意识到代码中有许多这样的“神奇范围”,用于提取各种内容。给它们起个名字对我和审阅者来说都更容易.. `last_row_indices = slice(-2, -1)` 和 `last_row = list(reversed(rows[last_row_indices])) # 不再关心为什么 - 2:-1` (2认同)