我已经提出了以下问题:
创建一个名为first_and_last_4的新函数。它会接受一个可迭代的对象,但是这次它将返回前四个和最后四个项目作为单个值。
这是我的代码:
def first_and_last_4(x):
first_4 = x[:4]
last_4 = x[-4:]
return (first_4.extend(last_4))
我也试图简化这一点:
def first_and_last_4(x):
return x[:4] + x[-4:]
错误:
笨蛋:找不到
first_4
你能帮忙吗?
答案 0 :(得分:1)
只需尝试一下:
def first_and_last_4(x):
return x[:4]+x[-4:] #you had indentation problem here
答案 1 :(得分:0)
注意。可迭代的对象不必是list
,因此不应将列表切片视为可接受的解决方案。要提取所需的元素,可以通过内置的iter
创建一个迭代器:
n
个元素,您可以在range(n)
上使用列表理解。n
元素,您可以使用collections.deque
并设置maxlen=n
。这是一个例子:
from itertools import islice
from collections import deque
def first_and_last_n(x, n=4):
iter_x = iter(x)
first_n = [next(iter_x) for _ in range(n)]
last_n = list(deque(iter_x, maxlen=n))
return first_n + last_n
res = first_and_last_n(range(10))
print(res)
[0, 1, 2, 3, 6, 7, 8, 9]