Python赋值、打包和解包,90%人不清楚的知识点!
? 人生苦短,快學(xué)Python!
關(guān)于賦值、打包和解包這 3個(gè)概念,我覺得有必要做一個(gè)分享,因?yàn)楹芏嗯笥汛_實(shí)不清楚。
如果有這樣一個(gè)元組t:
>>?t?=?('foo',?'bar',?'baz',?'qux')發(fā)生這種情況時(shí),就好像元組中的項(xiàng)目已被“打包”到對(duì)象中。我們可以通過索引,獲取其中的元素。
>>>?t ('foo',?'bar',?'baz',?'qux') >>>?t[0] 'foo' >>>?t[-1] 'qux'如果隨后將該“打包”對(duì)象分配給新元組,則各個(gè)項(xiàng)目將“解包”到元組中的對(duì)象中。我們來演示一下:
>>>?(s1,?s2,?s3,?s4)?=?t >>>?s1 'foo' >>>?s2 'bar' >>>?s3 'baz' >>>?s4 'qux'解包時(shí),左側(cè)的變量數(shù)必須與元組中的值數(shù)相匹配,否則會(huì)報(bào)錯(cuò)。
>>>?(s1,?s2,?s3)?=?t Traceback?(most?recent?call?last):File?"<pyshell#16>",?line?1,?in?<module>(s1,?s2,?s3)?=?t ValueError:?too?many?values?to?unpack?(expected?3)>>>?(s1,?s2,?s3,?s4,?s5)?=?t Traceback?(most?recent?call?last):File?"<pyshell#17>",?line?1,?in?<module>(s1,?s2,?s3,?s4,?s5)?=?t ValueError:?not?enough?values?to?unpack?(expected?5,?got?4)打包和解包,也可以合并為一個(gè)語句以進(jìn)行復(fù)合賦值。
>>>?(s1,?s2,?s3,?s4)?=?('foo',?'bar',?'baz',?'qux') >>>?s1 'foo' >>>?s2 'bar' >>>?s3 'baz' >>>?s4 'qux'同樣,賦值左側(cè)元組中的元素?cái)?shù)量必須等于右側(cè)的數(shù)量。
>>>?(s1,?s2,?s3,?s4,?s5)?=?('foo',?'bar',?'baz',?'qux') Traceback?(most?recent?call?last):File?"<pyshell#63>",?line?1,?in?<module>(s1,?s2,?s3,?s4,?s5)?=?('foo',?'bar',?'baz',?'qux') ValueError:?not?enough?values?to?unpack?(expected?5,?got?4)在像這樣的賦值和少數(shù)其他情況下,Python允許省略通常用于表示元組的括號(hào)。
>>>?t?=?1,?2,?3 >>>?t (1,?2,?3)>>>?x1,?x2,?x3?=?t >>>?x1,?x2,?x3 (1,?2,?3)>>>?x1,?x2,?x3?=?4,?5,?6 >>>?x1,?x2,?x3 (4,?5,?6)>>>?t?=?2, >>>?t (2,)編程時(shí)經(jīng)常有兩個(gè)變量需要交換其值。在大多數(shù)編程語言中,有必要在交換發(fā)生時(shí)將其中一個(gè)值存儲(chǔ)在臨時(shí)變量中,如下所示:
>>>?a?=?'foo' >>>?b?=?'bar' >>>?a,?b ('foo',?'bar')>>>?temp?=?a >>>?a?=?b >>>?b?=?temp>>>?a,?b ('bar',?'foo')在 Python 中,交換可以通過單個(gè)元組賦值來完成。
>>>?a?=?'foo' >>>?b?=?'bar' >>>?a,?b ('foo',?'bar')>>>?a,?b?=?b,?a>>>?a,?b ('bar',?'foo')這種操作語法足夠精簡,是Java等語言,無法比擬的。
各位伙伴們好,詹帥本帥搭建了一個(gè)個(gè)人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請(qǐng)移步小程序體驗(yàn)一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
牛逼!Python函數(shù)和文件操作(長文系列第③篇)
牛逼!Python錯(cuò)誤、異常和模塊(長文系列第④篇)
總結(jié)
以上是生活随笔為你收集整理的Python赋值、打包和解包,90%人不清楚的知识点!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对标 VS Code,JetBrains
- 下一篇: 决策树可视化,被惊艳到了!