59 votes

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

J'ai une idée générale de la façon de procéder en Java, mais je suis en train d'apprendre Python et je ne sais pas comment m'y prendre.

Je dois implémenter une fonction qui renvoie une liste contenant tous les autres éléments de la liste, en commençant par le premier élément.

Jusqu'à présent, je ne suis pas sûr de savoir comment faire à partir de là, car je viens d'apprendre comment les boucles for en Python sont différentes :

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

    print b

97voto

Muhammad Alkarouri Points 8463
def altElement(a):
    return a[::2]

91voto

Darius Bacon Points 9741

Notation des tranches a[start_index:end_index:step]

return a[::2]

start_index La valeur par défaut est 0 y end_index La valeur par défaut est le len(a) .

27voto

Joel Cornett Points 10475

Vous pouvez aussi le faire :

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

La notation étendue des tranches est beaucoup plus concis, cependant.

1 votes

Cela m'a été utile, mais c'est différent de la notation de la tranche étendue en ce sens que cela vous donne un index avec lequel vous pouvez ensuite atteindre le tableau original, au lieu d'obtenir un tableau "filtré". Ils ont donc des cas d'utilisation différents.

1 votes

Le plus grand avantage de cette réponse est qu'elle est beaucoup plus lisible que la "notation en tranches étendue", notamment pour les développeurs nonython.

8voto

jdi Points 38029
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]
]

1 votes

La seule réponse pour résoudre le problème de la sœur : chaque autre élément a deux interprétations.

0 votes

@jdi Au lieu de [1::2] Et si je veux que chaque "autre élément" à partir de index = 0 ? Alors [0, 2, 4, 6, 8] . Merci.

1 votes

@StressedBoi_69420 la syntaxe est [start:end:step] il suffit donc de le changer en [0::2] pour qu'il commence à 0 au lieu de 1

6voto

Mr. Polywhirl Points 3677

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]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X