2013-04-08 16 views
7

Mi è stato chiesto di accettare un elenco di numeri interi (x), aggiungere il primo valore e l'ultimo valore nell'elenco e quindi restituire un intero con la somma. Ho usato il seguente codice per farlo, ma il problema che ho è che quando provo a valutare la somma è in realtà una lista di un elemento invece di un intero. Ho provato a trasmetterlo a un int ma non riesco a farlo funzionare.Conversione di un elenco di un elemento in un numero intero

def addFirstAndLast(x): 
    lengthOfList = len(x) 
    firstDigit = x[0:1] 
    lastDigit = x[lengthOfList:lengthOfList-1] 
    sum = firstDigit + lastDigit 
    return sum 
+0

Quale dovrebbe essere il comportamento se 'x' contiene un numero? Dovrebbe restituire 'x [0]' o '2 * x [0]'? –

risposta

13

utilizzare gli indici

Stai affettare la lista, che restituiscono liste. Qui, è necessario utilizzare gli indici invece:

firstDigit = x[0] 
lastDigit = x[-1] 

Perché sta affettando sbagliato per voi:

Quando si esegue x[0:1], si sta prendendo l'elenco degli elementidall'inizio della lista al primo intervallo.

item0, item1, item2, item3 
^ interval 0 
     ^interval 1 
      ^interval 2 
        ^interval 3  

Facendo x[0:2], per esempio, restituirebbe oggetti 0 e 1.

4

tutto si riduce a questo:

def addFirstAndLast(x): 
    return x[0] + x[-1] 

In Python, un indice elenco negativo significa: avviare l'indicizzazione da il diritto dell'elenco in direzione a sinistra, dove la prima posizione da destra a sinistra è -1, la seconda posizione è -2 e l'ultima posizione è -len(lst).

4

Uso Slice Notation:

def addFirstAndLast(x): 
    return x[0] + x[-1] 

x [0] = vi darà 0 ° indice della lista, primo valore.

x [-1] = vi darà l'ultima elemento della lista.

Problemi correlati