2013-08-22 15 views
7

mam krotki w Pythonie, który wygląda tak:Python, dzielona przedmioty krotkowe do pojedynczych rzeczy

tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook') 

i chcę podzielić ją na zewnątrz, więc może dostać każdy element z krotki niezależny, więc mogłem zrobić coś takiego :

domain = "sparkbrowser.com" 
level = 0 
url = "http://facebook.com/sparkbrowser" 
text = "Facebook" 

lub coś podobnego do tego, Moją potrzebą jest oddzielenie każdego przedmiotu. Próbowałem z .split(",") na krotki ale stałam się błąd, który mówi, że krotka nie posiada opcję

Każda pomoc lub rada jest mile widziany

+0

to się nazywa [* sekwencja rozpakowaniu *] (https://docs.python.org/2/tutorial/datastructures. html # tuples-and-sequence) (patrz ostatni akapit) lub po prostu * rozpakowywanie *. – n611x007

Odpowiedz

16

Python może naturalnie rozpakować sekwencje podzielone.

domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook') 
+0

Dziękuję, to wszystko, nie myślałem, że to takie proste :) – dzordz

2
>>> domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook') 
>>> domain 
'sparkbrowser.com' 
>>> level 
0 
>>> url 
'http://facebook.com/sparkbrowser' 
>>> text 
'Facebook' 
3

najlepiej nie używać tuple jako nazwy zmiennej.

Możesz użyć split(','), jeśli masz ciąg znaków, taki jak 'sparkbrowser.com,0,http://facebook.com/sparkbrowser,Facebook', który musisz przekonwertować na listę. Jednak masz już krotkę, więc nie ma tu potrzeby.

Jeśli wiesz, że masz dokładnie odpowiednią liczbę elementów, można go rozpakować bezpośrednio

the_tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook') 
domain, level, url, text = the_tuple 

Python3 ma potężne składni rozpakowywania. Aby dostać tylko domain i text można użyć

domain, *rest, text = the_tuple 

rest będzie zawierać [0, 'http://facebook.com/sparkbrowser']