Рішення
Так, ти можеш:
l = L[1::2]
І це все. Результат буде містити елементи, розміщені на наступних позиціях ( 0
-основані, тому перший елемент знаходиться у положенні 0
, другий у 1
тощо):
1, 3, 5
тому результат (фактичні числа) буде:
2, 4, 6
Пояснення
В [1::2]
кінці - це лише позначення для нарізки списку. Зазвичай він складається у такій формі:
some_list[start:stop:step]
Якщо ми пропустили start
, 0
буде використано default ( ). Отже, буде обраний перший елемент (у положенні 0
, оскільки індекси - 0
основи). У цьому випадку буде обраний другий елемент.
Оскільки другий елемент опущений, використовується за замовчуванням (кінець списку). Тож список повторюється від другого елемента до кінця .
Ми також надали третій аргумент ( step
), який є 2
. Що означає, що буде обраний один елемент, наступний буде пропущений і так далі ...
Отже, підводячи підсумок, у цьому випадку [1::2]
означає:
- візьміть другий елемент (який, до речі, є непарним елементом, якщо судити з індексу),
- пропустити один елемент (тому що у нас є
step=2
, тому ми пропускаємо один, на відміну від step=1
замовчування),
- взяти наступний елемент,
- Повторіть кроки 2.-3. до кінця списку,
EDIT : @PreetKukreti дав посилання на ще одне пояснення щодо позначення нарізки списку Python. Дивіться тут: Поясніть позначення фрагментів Python
Екстри - заміна лічильника на enumerate()
У своєму коді ви чітко створюєте та збільшуєте лічильник. У Python це не обов'язково, так як ви можете перерахувати через деякі ітерабельні, використовуючи enumerate()
:
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
Вищезазначене служить точно тій самій цілі, що і код, який ви використовували:
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
Детальніше про емуляцію for
циклів з лічильником у Python: Доступ до індексу в циклі Python 'for'