2016-02-06 20 views
6

una tupla è un elenco separato da virgole di valoriPerché le tuple sono racchiuse tra parentesi?

quindi la sintassi valida per dichiarare una tupla è:

tup = 'a', 'b', 'c', 'd' 

Ma quello che vedo spesso è una dichiarazione come questa:

tup = ('a', 'b', 'c', 'd') 

Qual è il vantaggio di racchiudere le tuple tra parentesi?

+5

leggibilità, per cominciare. –

+2

qualcuno famoso una volta disse" * A volte una parentesi è solo una parentesi * * "La virgola fa la tupla, le parentesi fanno semplicemente quello che fanno sempre. – uhoh

risposta

4

Le parentesi sono solo parentesi - funzionano modificando la precedenza. L'unica eccezione è se non è racchiuso nulla (ovvero ()) nel qual caso genererà una tupla vuota.

La ragione per cui si utilizzano le parentesi è comunque che risulterà in una notazione abbastanza coerente. Puoi scrivere la tupla vuota e qualsiasi altra tupla in questo modo.

Un'altra ragione è che normalmente si desidera che un valore letterale abbia precedenza più elevata rispetto ad altre operazioni. Ad esempio, l'aggiunta di due tuple verrà scritta (1,2)+(3,4) (se si omettono le parentesi qui si ottiene 1,2+3,4 che significa prima aggiungere 2 e 3 quindi formare la tupla - il risultato è 1,5,4). Situazioni simili sono quando si vuole passare una tupla a una funzione f(1,2) significa inviare gli argomenti 1 e 2 mentre f((1,2)) significa inviare la tupla (1,2). Un altro è se si desidera includere una tupla all'interno di una tupla ((1,2),(3,4) e (1,2,3,4) sono due cose diverse.

10

Dal Python docs:

... in modo che le tuple annidate possono essere interpretate in modo corretto. Le tuple possono essere input con o senza parentesi, anche se spesso le parentesi sono necessarie (se la tupla fa parte di un'espressione più grande ).

Esempio di tuple annidate:

tuple = ('a', ('b', 'c'), 'd') 
1

Queste sono buone risposte! Ecco solo un esempio ulteriore di tuple in azione (imballaggio/disimballaggio):

Se si esegue questa operazione

x, y = y, x 

quello che sta succedendo è:

tuple_1 = (y, x) 
(x, y) = tuple_1 

, che è la stessa:

tuple_1 = (y, x) 
x = tuple_1[0] 
y = tuple_1[1] 

In tutti questi casi la parentesi non fare nulla al pitone. Ma sono utili se vuoi dire a qualcuno che legge la sceneggiatura "ehi! Sto facendo una tupla qui! Se non vedessi la virgola, aggiungerò queste parentesi per attirare la tua attenzione! "

Naturalmente le risposte su tuple annidate sono corrette. Se si vuole mettere un tupla all'interno di qualcosa di simile a una tupla o una lista ...

A = x, (x, y) # same as (x, (x, y)) 
B = [x, (x, y)] 
+0

Grazie per il montaggio ma l'ho fatto tornare indietro. Va bene e non è insolito chiamare script python solo "python", e molti sostengono che il termine "script" sia meglio di "codice" quando applicato a python e penso di aver visto molti esempi di contributori di alta reputazione che aggiungono qualche parola di credito ad altre risposte prima di aggiungere il loro contributo come risposta aggiuntiva. Quando ci sono molte risposte, questi segnali possono aiutare a guidare un lettore che arriva alla domanda. Mi hanno certamente aiutato. – uhoh

Problemi correlati