Або, більш загальним питанням було б, як нарізати масив, щоб отримати кожен n-й рядок, тому для парних / непарних ви хочете пропустити один рядок, але в загальному випадку ви хочете отримати кожен n- й рядки, пропускаючи n-1 рядки.
Або, більш загальним питанням було б, як нарізати масив, щоб отримати кожен n-й рядок, тому для парних / непарних ви хочете пропустити один рядок, але в загальному випадку ви хочете отримати кожен n- й рядки, пропускаючи n-1 рядки.
Відповіді:
Припускаючи, що ви говорите про список , ви вказуєте крок у зрізі (і індекс запуску). Синтаксис є 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]
.
::
? Або обидва вони є оператором, який відрізняється від :
? Якщо я l[::1]
отримаю вихідний масив, тоді?
l[2:5]
. Крок необов’язковий.
> map(lambda index: arr[index],filter(lambda x: x%n == 0,range(len(arr))))
де arr
список, і n
фрагменти потрібні.
map()
та filter()
за допомогою lambda
. Це не рекомендується / повільно, і це завжди слід робити, використовуючи розуміння списку.