Maison > développement back-end > Tutoriel Python > Comment déduire manuellement les résultats des expressions de déballage, de déballage étendu et de déballage étendu imbriquées de Python ?

Comment déduire manuellement les résultats des expressions de déballage, de déballage étendu et de déballage étendu imbriquées de Python ?

Patricia Arquette
Libérer: 2024-11-25 10:09:33
original
764 Les gens l'ont consulté

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

Comprendre le déballage, le déballage étendu et le déballage étendu imbriqué

Questions

Considérez les expressions suivantes , notant que certains sont répétés pour exprimer le « contexte ».

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 -- 要解包的值过多
Copier après la connexion

Comment dériver correctement le résultat d'une telle expression manuellement ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal