Подтвердить что ты не робот

Несколько фрагментов с Python

Мне нужно извлечь данные из нескольких позиций в массиве.

Простым массивом будет: -

listing = (4, 22, 24, 34, 46, 56)

Я знаком с нарезкой. Например:-

listing[0:3]

дал бы мне: -

(4, 22, 24)

Однако я не могу выбраться из нескольких кусочков. Например:-

listing[0:3, 4:5]

дает мне

TypeError: tuple indices must be integers not tuples

Несмотря на поиск двух книг Python и Интернета, я не могу использовать синтаксис для использования.

4b9b3361

Ответ 1

Вы можете срезать дважды и присоединиться к ним.

listing[0:3] + listing[4:5]

Ответ 2

Если у вас есть порядковые номера нужных вам кусочков, вы можете просто взять их с помощью цикла, содержащегося в списке.

index_nums = [0,2,4]
output = [listing[val] for val in index_nums]

Это вернет [4,24,46]

Ответ 3

Пытаться:

>>> listing = (4, 22, 24, 34, 46, 56)
>>> listing[0:3], listing[4:5]
((4, 22, 24), (46,))

Ответ 4

Мне нужна была именно эта конструкция для ситуации с пандами. Я использовал вспомогательный генератор.

Python 3.7.4 (v3.7.4:e09359112e, Jul  8 2019, 14:54:52) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> listing = (4, 22, 24, 34, 46, 56)
>>> def multislice(a,sl):
...     for si in sl:
...         yield a[si]
... 
>>> list(multislice(listing,[slice(0,3),slice(4,5)]))
[(4, 22, 24), (46,)]

И, как сказать, как делать много разных кусочков.

>>> list(multislice(listing,[slice(0,3),slice(4,5),slice(3,None)]))
[(4, 22, 24), (46,), (34, 46, 56)]