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
def altElement(a):
return a[::2]
Notation de tranche a[start_index:end_index:step]
return a[::2]
où start_index
est défini par défaut sur 0
et end_index
par défaut sur len(a)
.
Alternativement, vous pouvez faire:
for i in range(0, len(a), 2):
#do something
La notation de tranche étendue est beaucoup plus concise, cependant.
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]
]
b = a[::2]
Ceci utilise la syntaxe de tranche étendue .
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]
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.