Пропуск каждого второго элемента после первого - PullRequest
39 голосов
/ 15 января 2012

У меня есть общее представление о том, как сделать это на Java, но я изучаю Python и не знаю, как это сделать.

Мне нужно реализовать функцию, которая возвращает список, содержащий все остальные элементы списка, начиная с первого элемента.

Пока я не знаю, как это сделать, посколькуЯ только учусь тому, как циклы for в Python отличаются:

def altElement(a):
    b = []
    for i in a:
        b.append(a)

    print b

Ответы [ 7 ]

57 голосов
/ 15 января 2012
def altElement(a):
    return a[::2]
52 голосов
/ 15 января 2012

Обозначение среза a[start_index:end_index:step]

return a[::2]

, где start_index по умолчанию 0 и end_index по умолчанию len(a).

14 голосов
/ 15 января 2012

В качестве альтернативы вы можете сделать:

for i in range(0, len(a), 2):
    #do something

Расширенная запись среза является намного более краткой, хотя.

3 голосов
/ 12 августа 2015

Существует больше способов, чем один, чтобы убить кошку. - Себа Смит

arr = list(range(10)) # Range from 0-9

# List comprehension: Range with conditional
print [arr[index] for index in range(len(arr)) if index % 2 == 0]

# List comprehension: Range with step
print [arr[index] for index in range(0, len(arr), 2)]

# List comprehension: Enumerate with conditional
print [item for index, item in enumerate(arr) if index % 2 == 0]

# List filter: Index in range
print filter(lambda index: index % 2 == 0, range(len(arr)))

# Extended slice
print arr[::2]
3 голосов
/ 15 января 2012
items = range(10)
print items
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print items[1::2] # every other item after the second; slight variation
>>> [1, 3, 5, 7, 9]
]
3 голосов
/ 15 января 2012
b = a[::2]

Используется расширенный синтаксис среза .

0 голосов
/ 15 января 2012

Используя цикл for, как у вас, один из способов таков:

def altElement(a):
    b = []
    j = False
    for i in a:
        j = not j
        if j:
            b.append(i)

    print b

j просто продолжает переключаться между 0 и 1, чтобы отслеживать, когда добавлять элемент в b.

...