Что такое :: (двойное двоеточие) в Python, когда подписывать последовательности?

Я знаю, что могу использовать что-то вроде string [3: 4] , чтобы получить подстроку в Python, но что означает 3 в somesequence [:: 3] ?

236
задан Jonathan Leffler 3 February 2017 в 13:08
поделиться

6 ответов

это означает «ничего для первого аргумента, ничего для второго и прыгать на три». Он получает нарезку каждого третьего элемента последовательности. Расширенные фрагменты - это то, что вам нужно. Новое в Python 2.3

215
ответ дан 23 November 2019 в 03:26
поделиться

Адреса фрагментов последовательности Python могут быть записаны как [начало: конец: шаг], и любое из начало, конец или конец можно отбросить. a [:: 3] - это каждый третий элемент последовательности.

136
ответ дан 23 November 2019 в 03:26
поделиться

seq [:: n] - это последовательность каждого n -го элемента во всей последовательности.

Пример:

>>> range(10)[::2]
[0, 2, 4, 6, 8]

Синтаксис:

seq[start:end:step]

Итак, вы можете сделать:

>>> range(100)[5:18:2]
[5, 7, 9, 11, 13, 15, 17]
73
ответ дан 23 November 2019 в 03:26
поделиться

При нарезке в Python третьим параметром является шаг. Как уже упоминалось, см. Расширенные фрагменты для хорошего обзора.

С учетом этого [:: 3] просто означает, что вы не указали начальный или конечный индексы для своего фрагмента. Поскольку вы указали шаг 3 , это займет каждую третью запись что-то , начиная с первого индекса. Например:

>>> '123123123'[::3]
'111'
13
ответ дан 23 November 2019 в 03:26
поделиться

Третий параметр - это шаг. Итак, [:: 3] вернет каждый третий элемент списка / строки.

6
ответ дан 23 November 2019 в 03:26
поделиться

Объяснение

s [i: j: k] является, согласно документации , «срезом s от i до j с шагом k». Когда i и j отсутствуют, предполагается вся последовательность, и, таким образом, s [:: k] означает «каждый k-й элемент».

Примеры

Сначала инициализируем список:

>>> s = range(20)
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Давайте возьмем каждые 3 rd элемента из s :

>>> s[::3]
[0, 3, 6, 9, 12, 15, 18]

Давайте возьмем каждые 3 rd элемент из с [2:] :

>>> s[2:]
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> s[2::3]
[2, 5, 8, 11, 14, 17]

Давайте возьмем каждый 3 элемент из с [5:12] :

>>> s[5:12]
[5, 6, 7, 8, 9, 10, 11]
>>> s[5:12:3]
[5, 8, 11]

Давайте возьмем каждые 3 -го элемента из s [: 10] :

>>> s[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> s[:10:3]
[0, 3, 6, 9]
50
ответ дан 23 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: