web-dev-qa-db-fra.com

Sauter tous les autres éléments après le premier

J'ai une idée générale de comment faire cela en Java, mais j'apprends Python et je ne sais pas comment le faire.

J'ai besoin d'implémenter une fonction qui renvoie une liste contenant tous les autres éléments de la liste, en commençant par le premier.

Jusqu'ici, je ne sais pas trop comment faire à partir de là, car je suis en train d'apprendre à for-loop dans Python sont différents:

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

    print b
40
seiryuu10
def altElement(a):
    return a[::2]
58
Muhammad Alkarouri

Notation de tranche a[start_index:end_index:step]

return a[::2]

start_index est défini par défaut sur 0 et end_index par défaut sur len(a).

54
Darius Bacon

Alternativement, vous pouvez faire:

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

La notation de tranche étendue est beaucoup plus concise, cependant.

14
Joel Cornett
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]
]
4
jdi
b = a[::2]

Ceci utilise la syntaxe de tranche étendue .

3
John Zwinck

Il y a plus d'une façon d'écorcher un chat. - Seba Smith

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
Mr. Polywhirl

En utilisant la boucle for, comme vous l'avez fait, voici un moyen:

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

    print b

j ne fait que basculer entre 0 et 1 pour savoir quand ajouter un élément à b.

0
bchurchill