1.1 将�列分解为�独的��¶
问题¶
现在有一个包å�« N ä¸ªå…ƒç´ çš„å…ƒç»„æˆ–è€…æ˜¯åº�åˆ—ï¼Œæ€Žæ ·å°†å®ƒé‡Œé�¢çš„值解压å�Žå�Œæ—¶èµ‹å€¼ç»™ N 个å�˜é‡�?
解决方案¶
任何的åº�列(或者是å�¯è¿ä»£å¯¹è±¡ï¼‰å�¯ä»¥é€šè¿‡ä¸€ä¸ªç®€å�•的赋值æ“�作æ�¥åˆ†è§£ä¸ºå�•独的å�˜é‡�。 唯一的è¦�求就是å�˜é‡�的总数和结构必须与åº�列相å�»å�ˆã€‚
代ç �示例:
>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
>>>
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name
'ACME'
>>> date
(2012, 12, 21)
>>> name, shares, price, (year, mon, day) = data
>>> name
'ACME'
>>> year
2012
>>> mon
12
>>> day
21
>>>
å¦‚æžœå…ƒç´ çš„æ•°é‡�ä¸�匹é…�,会得到一个错误æ��示。
代ç �示例:
>>> p = (4, 5)
>>> x, y, z = p
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>>
讨论¶
ä¸�ä»…ä»…å�ªæ˜¯å…ƒç»„或列表,å�ªè¦�对象是å�¯è¿ä»£çš„,就å�¯ä»¥æ‰§è¡Œåˆ†è§£æ“�作。 包括å—符串,文件对象,è¿ä»£å™¨å’Œç”Ÿæˆ�器。
代ç �示例:
>>> s = 'Hello'
>>> a, b, c, d, e = s
>>> a
'H'
>>> b
'e'
>>> e
'o'
>>>
æœ‰æ—¶å€™ï¼Œä½ å�¯èƒ½å�ªæƒ³è§£åŽ‹ä¸€éƒ¨åˆ†ï¼Œä¸¢å¼ƒå…¶ä»–çš„å€¼ã€‚å¯¹äºŽè¿™ç§�情况 Python 并没有æ��ä¾›ç‰¹æ®Šçš„è¯æ³•。 ä½†æ˜¯ä½ å�¯ä»¥ä½¿ç”¨ä»»æ„�å�˜é‡�å��去å� ä½�,到时候丢掉这些å�˜é‡�就行了。
代ç �示例:
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1
>>>
ä½ å¿…é¡»ä¿�è¯�ä½ é€‰ç”¨çš„é‚£äº›å� ä½�å�˜é‡�å��在其他地方没被使用到。