самый короткий способ нарезать четные / нечетные строки из массива python?

<p>или, более общий вопрос был бы, как разрезать массив, чтобы получить каждую n-ю строку, поэтому для четного/нечетного вы хотели бы пропустить одну строку, но в общем случае вы хотели бы получить каждую n- й строки, пропуская n-1 строк.</p>

<p>предполагая, что вы говорите о <em> списке </em>, вы указываете шаг в срезе (и начальный индекс). синтаксис <code>list[start:end:step]</code>.</p><p>вы, вероятно, знаете обычный список доступа, чтобы получить предмет, например, <code>l[2]</code>, чтобы получить третий элемент. давая два числа и двоеточие между ними, вы можете указать <em> диапазон </em>, который вы хотите получить из списка. возвращаемое значение - другой список. например. <code>l[2:5]</code> дает вам третий-шестой элемент. вы также можете передать необязательный третий номер, который определяет размер шага. размер шага по умолчанию равен единице, что означает <em> взять каждый элемент </em> (между начальным и конечным индексом).</p><p>пример:</p><pre><code>>>> 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] </code></pre><p>смотрите <a href="http://docs.python.org/tutorial/introduction.html#lists">списки в учебнике python</a> .</p><p>если вы хотите получить каждый <em> <code>n</code>- й </em> элемент списка (т. е. исключая первый элемент), вам придется выполнять нарезку, как <code>l[(n-1)::n]</code>.</p><p>пример:</p><pre><code>>>> l = range(20) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] </code></pre><p>теперь, получение каждого третьего элемента будет:</p><pre><code>>>> l[2::3] [2, 5, 8, 11, 14, 17] </code></pre><p>если вы хотите включить первый элемент, вы просто делаете <code>l[::n]</code>.</p>

<p>это больше для меня как полный пример;)</p><pre><code>>>> import itertools >>> ret = [[1,2], [3,4,5,6], [7], [8,9]] >>> itertools.izip\_longest(*ret) >>> [x for x in itertools.chain.from\_iterable(tmp) if x is not none] [1, 3, 7, 8, 2, 4, 9, 5, 6] </code></pre>