Ответ 1
Вы можете срезать дважды и присоединиться к ним.
listing[0:3] + listing[4:5]
Мне нужно извлечь данные из нескольких позиций в массиве.
Простым массивом будет: -
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 и Интернета, я не могу использовать синтаксис для использования.
Вы можете срезать дважды и присоединиться к ним.
listing[0:3] + listing[4:5]
Если у вас есть порядковые номера нужных вам кусочков, вы можете просто взять их с помощью цикла, содержащегося в списке.
index_nums = [0,2,4]
output = [listing[val] for val in index_nums]
Это вернет [4,24,46]
Пытаться:
>>> listing = (4, 22, 24, 34, 46, 56)
>>> listing[0:3], listing[4:5]
((4, 22, 24), (46,))
Мне нужна была именно эта конструкция для ситуации с пандами. Я использовал вспомогательный генератор.
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)]