Странный эффект присвоения Python? - PullRequest
0 голосов
/ 22 ноября 2018

Как мы все знаем, для Python мы могли бы легко назначить несколько переменных в одной строке.Но тут я сталкиваюсь со странной ситуацией.Скажем, у нас есть список:

x = [1, 2, 3, 4]

И затем мы делаем

x[0], x[x[0]] = 2, 1

Наконец, мы получили бы

x = [2, 2, 3, 4]

вместо

x = [2, 1, 3, 4]

Может ли кто-нибудь объяснить, что здесь происходит не так?Как python реализует назначение нескольких переменных в одной строке?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Что здесь происходит, так это то, что Python сначала выполняет вашу первую инструкцию.x[0]= 2

Таким образом, после 1-го выполнения x=[2,2,3,4]

Затем выполняется 2-е.Таким образом, он изменяет значение x[2]

после 2-го выполнения, x=[2,2,1,4]

и выдает результат как [2, 2, 1, 4]

0 голосов
/ 22 ноября 2018

Результирующий список не [2, 2, 3, 4], это [2, 2, 1, 4].x[0] присваивается значение 2, затем x[x[0]] становится x[2] и присваивается значение 1

...