Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Menyimpulkan Secara Manual Hasil Membongkar, Membongkar Lanjutan dan Ungkapan Membongkar Lanjutan Bersarang Python?

Bagaimana Menyimpulkan Secara Manual Hasil Membongkar, Membongkar Lanjutan dan Ungkapan Membongkar Lanjutan Bersarang Python?

Patricia Arquette
Lepaskan: 2024-11-25 10:09:33
asal
823 orang telah melayarinya

How to Manually Deduce the Results of Python's Unpacking, Extended Unpacking, and Nested Extended Unpacking Expressions?

Memahami membongkar, membongkar lanjutan dan membongkar lanjutan bersarang

Soalan

Pertimbangkan ungkapan berikut , dengan menyatakan bahawa sesetengahnya diulang untuk menyatakan "konteks."

a, b = 1, 2                          # 简单序列赋值
a, b = ['green', 'blue']             # 列表赋值
a, b = 'XY'                          # 字符串赋值
a, b = range(1,5,2)                  # 任何可迭代的对象都可以

                                     # 嵌套的序列赋值

(a,b), c = "XY", "Z"                 # a = 'X', b = 'Y', c = 'Z' 

(a,b), c = "XYZ"                     # ERROR -- 太多要解包的值
(a,b), c = "XY"                      # ERROR -- 需要超过 1 个要解包的值

(a,b), c, = [1,2],'this'             # a = '1', b = '2', c = 'this'
(a,b), (c,) = [1,2],'this'           # ERROR -- 太多要解包的值


                                     # 扩展的序列解包

a, *b = 1,2,3,4,5                    # a = 1, b = [2,3,4,5]
*a, b = 1,2,3,4,5                    # a = [1,2,3,4], b = 5
a, *b, c = 1,2,3,4,5                 # a = 1, b = [2,3,4], c = 5

a, *b = 'X'                          # a = 'X', b = []
*a, b = 'X'                          # a = [], b = 'X'
a, *b, c = "XY"                      # a = 'X', b = [], c = 'Y'
a, *b, c = "X...Y"                   # a = 'X', b = ['.','.','.'], c = 'Y'

a, b, *c = 1,2,3                     # a = 1, b = 2, c = [3]
a, b, c, *d = 1,2,3                  # a = 1, b = 2, c = 3, d = []

a, *b, c, *d = 1,2,3,4,5             # ERROR -- 赋值中存在两个星号表达式

(a,b), c = [1,2],'this'              # a = '1', b = '2', c = 'this'
(a,b), *c = [1,2],'this'             # a = '1', b = '2', c = ['this']

(a,b), c, *d = [1,2],'this'          # a = '1', b = '2', c = 'this', d = []
(a,b), *c, d = [1,2],'this'          # a = '1', b = '2', c = [], d = 'this'

(a,b), (c, *d) = [1,2],'this'        # a = '1', b = '2', c = 't', d = ['h', 'i', 's']

*a = 1                               # ERROR -- 目标必须在列表或元组中
*a = (1,2)                           # ERROR -- 目标必须在列表或元组中
*a, = (1,2)                          # a = [1,2]
*a, = 1                              # ERROR -- 'int' 对象不可迭代
*a, = [1]                            # a = [1]
*a = [1]                             # ERROR -- 目标必须在列表或元组中
*a, = (1,)                           # a = [1]
*a, = (1)                            # ERROR -- 'int' 对象不可迭代

*a, b = [1]                          # a = [], b = 1
*a, b = (1,)                         # a = [], b = 1

(a,b),c = 1,2,3                      # ERROR -- 太多要解包的值
(a,b), *c = 1,2,3                    # ERROR - 'int' 对象不可迭代
(a,b), *c = 'XY', 2, 3               # a = 'X', b = 'Y', c = [2,3]


                                     # 扩展的序列解包 -- 嵌套

(a,b),c = 1,2,3                      # ERROR -- 太多要解包的值
*(a,b), c = 1,2,3                    # a = 1, b = 2, c = 3

*(a,b) = 1,2                         # ERROR -- 目标必须在列表或元组中
*(a,b), = 1,2                        # a = 1, b = 2

*(a,b) = 'XY'                        # ERROR -- 目标必须在列表或元组中
*(a,b), = 'XY'                       # a = 'X', b = 'Y'

*(a, b) = 'this'                     # ERROR -- 目标必须在列表或元组中
*(a, b), = 'this'                    # ERROR -- 要解包的值过多
*(a, *b), = 'this'                   # a = 't', b = ['h', 'i', 's']

*(a, *b), c = 'this'                 # a = 't', b = ['h', 'i'], c = 's'

*(a,*b), = 1,2,3,3,4,5,6,7           # a = 1, b = [2, 3, 3, 4, 5, 6, 7]

*(a,*b), *c = 1,2,3,3,4,5,6,7        # ERROR -- 赋值中存在两个星号表达式
*(a,*b), (*c,) = 1,2,3,3,4,5,6,7     # ERROR -- 'int' 对象不可迭代
*(a,*b), c = 1,2,3,3,4,5,6,7         # a = 1, b = [2, 3, 3, 4, 5, 6], c = 7
*(a,*b), (*c,) = 1,2,3,4,5,'XY'      # a = 1, b = [2, 3, 4, 5], c = ['X', 'Y']

*(a,*b), c, d = 1,2,3,3,4,5,6,7      # a = 1, b = [2, 3, 3, 4, 5], c = 6, d = 7
*(a,*b), (c, d) = 1,2,3,3,4,5,6,7    # ERROR -- 'int' 对象不可迭代
*(a,*b), (*c, d) = 1,2,3,3,4,5,6,7   # ERROR -- 'int' 对象不可迭代
*(a,*b), *(c, d) = 1,2,3,3,4,5,6,7   # ERROR -- 赋值中存在两个星号表达式


*(a,b), c = 'XY', 3                  # ERROR -- 需要超过 1 个要解包的值
*(*a,b), c = 'XY', 3                 # a = [], b = 'XY', c = 3
(a,b), c = 'XY', 3                   # a = 'X', b = 'Y', c = 3

*(a,b), c = 'XY', 3, 4               # a = 'XY', b = 3, c = 4
*(*a,b), c = 'XY', 3, 4              # a = ['XY'], b = 3, c = 4
(a,b), c = 'XY', 3, 4                # ERROR -- 要解包的值过多
Salin selepas log masuk

Bagaimana cara memperoleh hasil ungkapan sedemikian secara manual dengan betul?

Atas ialah kandungan terperinci Bagaimana Menyimpulkan Secara Manual Hasil Membongkar, Membongkar Lanjutan dan Ungkapan Membongkar Lanjutan Bersarang Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan