需求: 很多时候手上已经有了一个具有n个元素的列表或者元组,你打算把这些元素单独取出来(解包)放入n个变量组成的集合(这里的集合和Python自己的set不同)中。
方法: 显然,最好的办法就是直接用赋值语句(=)来做这件事,唯一需要注意的就是,新变量的个数一定要和原列表、元组里面的元素个数相同:
In [1]: p = (4, 6, 7)In [2]: x, y, z = pIn [3]: xOut[3]: 4In [4]: yOut[4]: 6In [5]: zOut[5]: 7
In [7]: data = ['Jason', 2010, 59, ('SE', 'Web', 'Java')]In [8]: name, graduate_year, weight, (job, content, language) = dataIn [9]: nameOut[9]: 'Jason'In [10]: jobOut[10]: 'SE'In [11]: languageOut[11]: 'Java'这里需要注意的是,如果个数不匹配,自然会得到一个错误报告:
In [12]: mine = (2, 3, 4)In [13]: x, y = mine---------------------------------------------------------------------------ValueError Traceback (most recent call last)<ipython-input-13-be106769942b> in <module>()----> 1 x, y = mineValueError: too many values to unpack (expected 2)扩展: 上述解包方法实际上可以应用于所有类迭代器数据变量,除了上述的列表,元组,在字符串,文件,迭代器等上面自然也是可以使用的。例如:
In [14]: s = 'Jason'In [15]: a, b, c, d, e = sIn [16]: aOut[16]: 'J'In [17]: cOut[17]: 's'In [18]: eOut[18]: 'n'当然,你也可以舍弃一些不想要的元素,在这里,Python并没有特别指明设定一个舍弃变量符号,你可以随意使用自己喜欢的符号,比如:
In [19]: data = ['qin', 'f', 'Chengdu', '6000']In [20]: name, _, _, money = dataIn [21]: nameOut[21]: 'qin'In [22]: moneyOut[22]: '6000'56这里的’_’就是被舍弃的变量。 整个来看,这篇讲述的技巧主要是比较方便的让用户快速取到想要的值,并且存储在新变量中。对于这些类迭代器的数据变量而言,一般大家都喜欢用下标来取对应元素,不过总是带着下标做操作,可能并不方便,因此适时的选用变量获取,有时候会容易一些。————————————————
转载于:https://www.cnblogs.com/valorchang/p/11475708.html
相关资源:JAVA上百实例源码以及开源项目