从数组中取出中间的 X+3 和 X-3 个元素
Taking middle X+3 and X-3 elements from array
我正在尝试找到列表的中间元素,然后前后移动接下来的 3 个项目,并在 python 中创建一个新列表。
例如:
lst = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q]
x = my_func(lst)
print(x)
[f, g, h, i, j, k, l]
如何做到这一点?
我知道我可以通过这样做找到中间点:
middle_index = (len(lst) - 1)//2
但我对之后如何切片有点困惑。
是这样的吗?
def my_func(lst):
middle = len(lst)//2
nlst = lst[middle-3:middle]
nlst += lst[middle:middle+3]
return nlst
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q']
x = my_func(lst)
print(x) #==> [f, g, h, i, j, k, l]
使用 list slices 并避免像这样的 index out of range
错误:
def middle_slice(lst):
middle = len(lst) // 2
return lst[max(0, (middle - 3)) : min(len(lst), (middle + 4))]
for length in [9, 8, 2, 1, 0]:
print(length, middle_slice(list(range(length))))
# 9 [1, 2, 3, 4, 5, 6, 7]
# 8 [1, 2, 3, 4, 5, 6, 7]
# 2 [0, 1]
# 1 [0]
# 0 []
我正在尝试找到列表的中间元素,然后前后移动接下来的 3 个项目,并在 python 中创建一个新列表。
例如:
lst = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q]
x = my_func(lst)
print(x)
[f, g, h, i, j, k, l]
如何做到这一点?
我知道我可以通过这样做找到中间点:
middle_index = (len(lst) - 1)//2
但我对之后如何切片有点困惑。
是这样的吗?
def my_func(lst):
middle = len(lst)//2
nlst = lst[middle-3:middle]
nlst += lst[middle:middle+3]
return nlst
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q']
x = my_func(lst)
print(x) #==> [f, g, h, i, j, k, l]
使用 list slices 并避免像这样的 index out of range
错误:
def middle_slice(lst):
middle = len(lst) // 2
return lst[max(0, (middle - 3)) : min(len(lst), (middle + 4))]
for length in [9, 8, 2, 1, 0]:
print(length, middle_slice(list(range(length))))
# 9 [1, 2, 3, 4, 5, 6, 7]
# 8 [1, 2, 3, 4, 5, 6, 7]
# 2 [0, 1]
# 1 [0]
# 0 []