小编典典

我可以使用变量在 Python 中对列表进行 slice吗?

all

我正在尝试编写一个获取列表中间的代码,并从列表中删除中间索引元素和下一个索引元素并将其放入新列表中。

def odd_indices(lst):
  x = len(lst)/2
  new_lst = lst[:x] + lst[x-1:]
  return new_lst

print(odd_indices([4, 3, 7, 10, 11, -2]))

(我正在尝试从列表中删除“7”和“10”)

理论上,输出应该是

[4, 3, 11, -2]

但事实并非如此,因为我得到了一个错误

    Traceback (most recent call last):
  File "script.py", line 9, in <module>
    print(odd_indices([4, 3, 7, 10, 11, -2]))
  File "script.py", line 5, in odd_indices
    new_lst = lst[:x] + lst[x-1:]
TypeError: slice indices must be integers or None or have an __index__ method

我相信这个错误是由于我在切片中使用变量引起的。

请让我知道解决方法是什么!


阅读 98

收藏
2022-07-28

共1个答案

小编典典

你很亲密,但这不是问题。x这里不是 int,而是浮点数。每当您使用/时,结果将始终是浮点数。您可以使用楼层划分来解决这个问题。而不是len(lst) / 2,使用len(lst) // 2. 此外,与您的问题无关,但更改lst[x-1:]lst[x+1:]以获得所需的效果。

2022-07-28