Ответ 1
Решение
Да, вы можете:
l = L[1::2]
И это все. Результат будет содержать элементы, размещенные на следующих позициях (0
, поэтому первый элемент находится в позиции 0
, второй - при 1
и т.д.):
1, 3, 5
поэтому результатом (действительные числа) будет:
2, 4, 6
Описание
[1::2]
в конце - это всего лишь обозначение для сортировки списка. Обычно он находится в следующем виде:
some_list[start:stop:step]
Если мы опустим start
, будет использоваться значение по умолчанию (0
). Таким образом, будет выбран первый элемент (в позиции 0
, поскольку индексы 0
). В этом случае будет выбран второй элемент.
Поскольку второй элемент опущен, используется значение по умолчанию (конец списка). Таким образом, список повторяется со второго элемента до конца.
Мы также предоставили третий аргумент (step
), который равен 2
. Это означает, что будет выбран один элемент, следующий будет пропущен и так далее...
Итак, чтобы подвести итог, в этом случае [1::2]
означает:
- возьмите второй элемент (который, кстати, является нечетным элементом, если вы судите по индексу),
- пропустите один элемент (потому что у нас есть
step=2
, поэтому мы пропускаем один, как в отличие отstep=1
, который по умолчанию), - возьмите следующий элемент,
- Повторите шаги 2.-3. пока не будет достигнут конец списка,
РЕДАКТИРОВАТЬ: @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 для циклов