ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 问题: 现在有一个包含 N 个元素的元祖或者是序列,怎样将它里面的值解压后同时赋值给N个变量。 ***** ### 解决方案: 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量。唯一的前提就是变量的数量必须跟序列元素的数量是一致的。 ***** ##### 例:解包元祖 ```Python p = (4,5) x,y = p print(x,y) # 4 5 ``` **如果变量个数和序列元素的个数不匹配,会产生一个异常** 示例: ```Python p = (4, 5) x, y,z = p print(x, y,z) ValueError: not enough values to unpack (expected 3, got 2) ``` **这种解压赋值可以用在任何可迭代对象上面,而不仅仅是列表或者元祖。包括字符串,文件对象,迭代器,生成器** 示例: ```Python p = 'hello' a, b, c, d, f = p print(a, b, c, d, f) # h e l l o ``` ***** **有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python 并没有提供特殊的语法。但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。** ``` data = ['hello', 10, 50, 90.1, (2019, 10, 10)] _, a, b, _, d = data print(a) # 10 print(b) # 50 print(d) # (2019, 10, 10) ``` > **这里使用 _ 去占用丢弃的值的位置。可以使用任意变量名去占位,但是必须保证选用的占位变量在其他地方没被使用到,** 原文来自:http://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p01_unpack_sequence_into_separate_variables.html **如果解压不确定个数或任意个数元素,那该如何呢?且看下一章**