Самый короткий способ нарезать четные / нечетные строки из массива python?
или, более общий вопрос будет заключаться в том, как разрезать массив, чтобы получить каждую n-ю строку, поэтому для четных/нечетных вы хотите пропустить одну строку, но в общем случае вы хотите получить каждую n-ю строку, пропустив n-1 строк.
3 ответа:
если вы говорите о список, вы указываете шаг в срезе (и начальный индекс). Синтаксис
list[start:end:step]
.вы, вероятно, знаете обычный доступ к списку, чтобы получить элемент, например
l[2]
чтобы получить третий элемент. Давая два числа и двоеточие между ними, вы можете указать ряд что вы хотите получить из списка. Возвращаемое значение-это другой список. Е. Г.l[2:5]
дает вам третий-шестой пункт. Вы также можете передать необязательный третий номер, который определяет размер шага. Размер шага по умолчанию-один, что просто означает возьмите каждый элемент (между начальным и конечным индексом).пример:
>>> l = range(10) >>> l[::2] # even - start at the beginning at take every second item [0, 2, 4, 6, 8] >>> l[1::2] # odd - start at second item and take every second item [1, 3, 5, 7, 9]
посмотреть списки в учебнике Python.
если вы хотите получить все
n
-й элемент списка (т. е. исключая первый элемент), вы должны были бы нарезать какl[(n-1)::n]
.пример:
>>> l = range(20) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
теперь, получая каждый третий элемент будет:
>>> l[2::3] [2, 5, 8, 11, 14, 17]
если вы хотите включить Первый элемент, вы просто сделать
l[::n]
.