English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Esportazione degli elementi di un array in variabili utilizzando Python (unpacking)

Problema risolto

Occorre esportare gli elementi dell'array (list) o del tuple (tuple) in N variabili.

Soluzione al problema

Ogni sequenza può essere assegnata ai rispettivi variabili degli elementi tramite un semplice metodo di assegnazione delle variabili, l'unica richiesta è che il numero e la struttura delle variabili devono essere completamente identici alla struttura della sequenza.

p = (1, 2)
x, y = p
# x = 1
# y = 2
dati = ['google', 100.1, (2016, 5, 31)]
name, price, date = data
# nome = 'google'
# prezzo = 100.1
# data = (2016, 5, 31)
nome, prezzo, (anno, mese, giorno) = dati
# nome = 'google'
# prezzo = 100.1
# anno = 2016
# mese = 5
# giorno = 31

Se la struttura delle variabili non corrisponde alla struttura degli elementi, incontrerai gli errori seguenti:

p = (1, 2)
x, y, z = p
Traceback (chiamata più recente in alto):
 File "<pyshell#12>", riga 1, in <modulo>
  x, y, z = p
ValueError: non ci sono abbastanza valori da srotolare (attesi 3, trovati 2)

Questa operazione non è limitata ai tuple e agli array, può essere utilizzata anche nelle stringhe. L'unpacking supporta la maggior parte delle sequenze comuni che utilizziamo, come iteratori di file, vari generatori, ecc.

s = 'Hello'
a, b, c, d, e = s
# a = 'H'
# b = 'e'

Se durante il processo di esportazione desideri scartare alcuni elementi, Python non supporta un tale sintassi, ma puoi specificare alcune variabili non comuni per raggiungere il tuo obiettivo.

dati = ['google', 100.1, (2016, 5, 31)]
nome, _, (_, mese, _) = dati
# nome = 'google'
# mese = '5'
# altri campi verranno scartati

Sommario

Questo è tutto il contenuto dell'articolo, spero che il contenuto di questo articolo possa essere di aiuto per lo studio o il lavoro di tutti. Se avete domande, potete lasciare un messaggio di discussione, grazie per il supporto di Guida a URL.

Ti potrebbe interessare