233 votes

Comment supprimer le dernier élément d'une liste ?

J'ai ce programme qui calcule le temps pris pour répondre à une question spécifique, et sort de la boucle while lorsque la réponse est incorrecte, mais je veux supprimer le dernier calcul, de sorte que je puisse appeler min() et ce n'est pas le mauvais moment, désolé si c'est confus.

from time import time

q = input('What do you want to type? ')
a = ' '
record = []
while a != '':
    start = time()
    a = input('Type: ')
    end = time()
    v = end-start
    record.append(v)
    if a == q:
        print('Time taken to type name: {:.2f}'.format(v))
    else:
        break
for i in record:
    print('{:.2f} seconds.'.format(i))

4voto

mon Points 1271

Vous devez utiliser *list,_ = liste comme dans l'exemple suivant

record = [1,2,3]
*record,_ = record
record
---
[1, 2]

3voto

miku Points 63392

Si vous faites beaucoup avec le timing, je peux vous recommander ce petit (20 lignes) gestionnaire de contexte :

Votre code pourrait alors ressembler à ceci :

#!/usr/bin/env python
# coding: utf-8

from timer import Timer

if __name__ == '__main__':
    a, record = None, []
    while not a == '':
        with Timer() as t: # everything in the block will be timed
            a = input('Type: ')
        record.append(t.elapsed_s)
    # drop the last item (makes a copy of the list):
    record = record[:-1] 
    # or just delete it:
    # del record[-1]

À titre d'information, voici le contenu de la page d'accueil du site Web de la Commission. Minuterie gestionnaire de contexte dans son intégralité :

from timeit import default_timer

class Timer(object):
    """ A timer as a context manager. """

    def __init__(self):
        self.timer = default_timer
        # measures wall clock time, not CPU time!
        # On Unix systems, it corresponds to time.time
        # On Windows systems, it corresponds to time.clock

    def __enter__(self):
        self.start = self.timer() # measure start time
        return self

    def __exit__(self, exc_type, exc_value, exc_traceback):
        self.end = self.timer() # measure end time
        self.elapsed_s = self.end - self.start # elapsed time, in seconds
        self.elapsed_ms = self.elapsed_s * 1000  # elapsed time, in milliseconds

1voto

FlyingZebra1 Points 215

Si vous avez une liste de listes ( feuille_de_sortie_suivie dans mon cas), où vous voulez supprimer le dernier élément de chaque liste, vous pouvez utiliser le code suivant :

interim = []
for x in tracked_output_sheet:interim.append(x[:-1])
tracked_output_sheet= interim

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