2012-01-27 5 views
6

Можно создать дубликат:
Good Primer for Python Slice NotationЧто делает список [x :: y]?

Я читал над некоторыми примерами кода в последнее время, и я прочитал довольно много сайтов, но я просто не могу показаться, чтобы получить запрос право дать мне ответ, который я ищу. Если бы кто-нибудь мог мне помочь, я был бы признателен.

+0

Если вы немного поработаете, вы найдете много сообщений с похожими вопросами (и аналогичными ответами). Я думаю, что этот человек должен быть закрыт – juliomalegria

ответ

13

Он разрезает

x[startAt:endBefore:skip] 

, если вы используете skip = 2, каждый другой элемент списка, начинающемуся на startAt и заканчивающийся в endBefore будет выбран. [Помните: индексы живут между списком элементов]

Чтобы увидеть это, введите

x = range(100) 

в приглашении Python. Затем попробуйте эти вещи

x[::2] 
x[::3] 
x[10:40:6] 

и посмотреть, что произойдет.

0

Это означает не создать новый список из x до конца с шагом y:

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

Возвращает список, содержащий каждый Yth элемент списка, начиная с индексом х.

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

Это фрагмент.

[начало: конец: шаг]

Оставив любой пробел ставит их на значения по умолчанию, в вашем случае оно принимает каждые y элементы, начиная с x и идти до конца списка.

См: What is :: (double colon) in Python when subscripting sequences?

2

Это синтаксис для среза списка. Когда вы говорите,

list[a:b:c], 

а является начальным индексом, а это конечный индекс и с это дополнительным размером шага. Это даст вам список, начинающийся с индекса a (включительно) и заканчивающийся на элементах выбора b (эксклюзивный) на шаге c.

Например,

l = [1,2,3,4,5,6,7] 

Если я сказать, L [2: 6: 2], это даст мне [3,5].

Если вы пропустите индекс конца, как и в своем вопросе, он примет элементы из начального индекса (x), выберите каждый y-й элемент, пока он не достигнет конца списка, если y положителен и начинает список, если y является отрицательным.

E.g.л [1 :: - 1] = [2,1]

л [1 :: 2] = [2,4,6]

Размер шага по умолчанию равно 1.

9

L[x::y] средство срез L, где x - это индекс для начала, а y - размер шага. Вот некоторые примеры, вы можете попробовать в интерпретаторе

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

Если вы хотите каждый 3rd элемент

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

Теперь каждый третий элемент, начиная с L [1]

>>> L[1::3] 
[1, 4, 7, 10, 13, 16, 19] 

Теперь каждый третий элемент, начиная с L [2]

>>> L[2::3] 
[2, 5, 8, 11, 14, 17] 

Вы можете задать отрицательный шаг, чтобы идти назад

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

Вы можете также назначить на этот кусочек, но это значение должно иметь такую ​​же длину, что и ломтиком вы заменяете

>>> L[::3]=[0,0,0,0,0,0,0] 
>>> L 
[0, 1, 2, 0, 4, 5, 0, 7, 8, 0, 10, 11, 0, 13, 14, 0, 16, 17, 0, 19] 

Наконец, вам может удалить каждый третий элемент, подобный этому

>>> del L[::3] 
>>> L 
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19] 
Смежные вопросы