Zastanawiam się, co oznacza ,=
lub , =
w python?Co znaczy, = oznacza w python?
przykład z matplotlib:
plot1, = ax01.plot(t,yp1,'b-')
Zastanawiam się, co oznacza ,=
lub , =
w python?Co znaczy, = oznacza w python?
przykład z matplotlib:
plot1, = ax01.plot(t,yp1,'b-')
Jest to forma krotki rozpakowywania. Z nawiasami:
(plot1,) = ax01.plot(t,yp1,'b-')
ax01.plot()
zwraca parę zawierającą jeden element i element ten jest przypisany do plot1
. Bez tego przecinka (i ewentualnie nawiasów), plot1
zostałaby przypisana cała krotka. Zaobserwować różnicę między a
i b
w poniższym przykładzie:
>>> def foo():
... return (1,)
...
>>> (a,) = foo()
>>> b = foo()
>>> a
1
>>> b
(1,)
Można pominąć nawiasy zarówno w (a,)
i (1,)
, zostawiłem je dla jasności.
To wydaje się być specyficzne dla wersji. Mówiąc dokładniej, możesz wspomnieć, że nie jest to możliwe, np. w Pythonie 2.7 ("ValueError: zbyt wiele wartości do rozpakowania"). Ponadto: dlaczego nie mogę "x ,,, = (1,2,3,4)"? –
@ThomasWeller 1) powyższy przykład działa w Pythonie 2.7, ten błąd oznacza, że krotka, którą próbujesz rozpakować, jest większa niż liczba zmiennych podanych w lhs. 2) nie możesz, ponieważ nie jest poprawna składnia. Jeśli chcesz zachować tylko pierwszy element, wykonaj 'x, _, _, _ = (1,2,3,4)', gdzie '_' jest zwykłą nazwą zmiennej, tradycyjnie używaną do sygnalizowania _ "Nie przejmuj się tą wartością". W każdym razie, myślę, że 'x = foo [0]' jest w tym przypadku jaśniejsze. –
@StefanoSanfilippo w python 3 możesz zrobić ['x, * _ = (1,2,3,4)'] (https: //asmeurer.github.io/python3-presentation/slides.html # 8) – Pureferret
Dodanie ,
po zmiennej umieszcza ją w krotce z pojedynczym elementem. Ta krotka jest następnie przypisana wartości (z operatorem =
) zwrócony z ax01.plot(t,yp1,'b-')
.
Python pozwala na umieszczenie krotek po lewej stronie zadania. Kod w pytaniu jest tego przykładem, może wyglądać tak, jakby był szczególnym przypadkiem operatora, ale tak naprawdę dzieje się tutaj tylko przypadkowe zadanie krotki. Niektóre przykłady mogą pomóc:
a, b = (1, 2)
co daje a = 1
i b = 2
.
Teraz istnieje pojęcie krotki jednoczęściowej.
x = (3,)
daje x = (3,)
która jest krotką z jednego elementu, składnia wygląda nieco dziwnie, ale Python potrzebuje do odróżnienia od zwykłego nawiasie więc ma spływu przecinek na to (na przykład z=(4)
sprawia oo jest wartością całkowitą 4, a nie krotki). Jeśli chciał teraz wyodrębnić ten element wtedy chcesz użyć czegoś jak masz w pytaniu:
y, = x
teraz y
to 3. Należy pamiętać, że jest to tylko krotka zadanie tutaj, składnia tylko wydaje się nieco dziwne ponieważ jest to krotka długość jednego.
Zobacz ten skrypt na przykład: http://ideone.com/qroNcx
@ArnabDatta Nie ya”nie może; to będzie 2-krotna. Możesz napisać '(plot1,) = ...' lub '[plot1] = ...', chociaż. – Veedrac