2017-10-20 16 views

Répondre

0
numbers_list = [5,4,12,7,15,9] 

for index in range(len(numbers_list)): 
    print(numbers_list[(index + 1) * - 1]) 

Je ne sais pas si elle est très « Pythonic »

Comme la liste indeces vous sont niées pouvez accéder aux éléments dans l'ordre inverse.

Dernier index dans une liste Python est [-1] et ainsi de suite, jusqu'à ce que le premier étant la longueur de la liste 1 (plus un dans ce cas pour obtenir le nombre négatif plus proche de 0).

+0

Pouvez-vous s'il vous plaît expliquer? –

+0

J'ai d'abord obtenu la longueur de la liste et ensuite itéré sur sa plage tout en multipliant indeces par -1 pour les rendre négatifs et accéder aux éléments dans le "verso". –

+0

mais je veux jusqu'à 4 –

0

En utilisant reversed et str.join:

numbers = [5, 4, 12, 7, 15, 9] 
print(",".join(str(n) for n in reversed(numbers))) # 9,15,7,12,4,5 

str.join est de loin mieux que la construction de votre propre chaîne en utilisant mystring += "something" en termes de performances. How slow is Python's string concatenation vs. str.join? fournit des informations intéressantes à ce sujet.

Je pourrais aussi écrire une compréhension de la liste pour créer une liste intermédiaire comme ceci:

reversed_string = [str(n) for n in reversed(numbers)] 
print(",".join(reversed_string)) 

mais l'écriture compréhension de la liste implique que nous enregistrons en mémoire deux fois la liste (l'original et le « strigified » un) . L'utilisation d'un générateur calcule dynamiquement les éléments pour str.join, un peu de la même manière qu'un itérateur classique.