Как разрезать список влево и вправо, кроме средней части? - PullRequest
0 голосов
/ 08 декабря 2018

Список:

x = [1, 6, 2, 7, 1, 6, 1]

len(x)
> 7

Как бы я разделил список на первые 3 и последние 3, таким образом, значение 7 оставлено в покое, используя методы нарезки списка?

Вывод

x[0:2,4:6] #<-- This doesn't work
> [1, 6, 2, 1, 6, 1] #<-- Expected output

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Вы можете сделать: x [0: 3] + x [4: 7] или x [: 3] + x [-3:].Второй получает первые 3 элемента из последнего и первые три элемента справа.

0 голосов
/ 08 декабря 2018

Соответствие операционному требованию: «Есть ли способ сохранить одинаковые скобки? X [..., ...] похож на этот?» (Не только с использованием x[:3]+x[-3:]):

Используйте numpy.delete вместе с numpy.r_.Укажите, какое первое число элементов n1 и какое последнее число элементов n2 вы хотите оставить таким образом

import numpy as np
x = [1, 6, 2, 7, 1, 6, 1]
n1 = 3 # Keep first n1 elements
n2 = 3 # Keep last n2 elements

print(list(np.delete(x,(np.r_[n1:len(x)-n2])))) # [1 6 2 1 6 1]
...