>백엔드 개발 >파이썬 튜토리얼 >Python\의 압축 풀기, 확장된 압축 풀기 및 중첩된 확장 압축 풀기 표현식의 결과를 수동으로 추론하는 방법은 무엇입니까?

Python\의 압축 풀기, 확장된 압축 풀기 및 중첩된 확장 압축 풀기 표현식의 결과를 수동으로 추론하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-25 10:09:33743검색

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

Unpacking, Extended Unpacking 및 Nested Extended Unpacking 이해

질문

다음 표현을 고려하세요. , 일부는 "맥락"을 표현하기 위해 반복된다는 점에 유의하세요.

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 -- 要解包的值过多

이러한 표현식의 결과를 수동으로 올바르게 도출하는 방법은 무엇입니까?

위 내용은 Python\의 압축 풀기, 확장된 압축 풀기 및 중첩된 확장 압축 풀기 표현식의 결과를 수동으로 추론하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.