Python赋值、打包和解包,90%人不清楚的知识点!
? 人生苦短,快學Python!
關于賦值、打包和解包這 3個概念,我覺得有必要做一個分享,因為很多朋友確實不清楚。
如果有這樣一個元組t:
>>?t?=?('foo',?'bar',?'baz',?'qux')發(fā)生這種情況時,就好像元組中的項目已被“打包”到對象中。我們可以通過索引,獲取其中的元素。
>>>?t ('foo',?'bar',?'baz',?'qux') >>>?t[0] 'foo' >>>?t[-1] 'qux'如果隨后將該“打包”對象分配給新元組,則各個項目將“解包”到元組中的對象中。我們來演示一下:
>>>?(s1,?s2,?s3,?s4)?=?t >>>?s1 'foo' >>>?s2 'bar' >>>?s3 'baz' >>>?s4 'qux'解包時,左側的變量數(shù)必須與元組中的值數(shù)相匹配,否則會報錯。
>>>?(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)打包和解包,也可以合并為一個語句以進行復合賦值。
>>>?(s1,?s2,?s3,?s4)?=?('foo',?'bar',?'baz',?'qux') >>>?s1 'foo' >>>?s2 'bar' >>>?s3 'baz' >>>?s4 'qux'同樣,賦值左側元組中的元素數(shù)量必須等于右側的數(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允許省略通常用于表示元組的括號。
>>>?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,)編程時經(jīng)常有兩個變量需要交換其值。在大多數(shù)編程語言中,有必要在交換發(fā)生時將其中一個值存儲在臨時變量中,如下所示:
>>>?a?=?'foo' >>>?b?=?'bar' >>>?a,?b ('foo',?'bar')>>>?temp?=?a >>>?a?=?b >>>?b?=?temp>>>?a,?b ('bar',?'foo')在 Python 中,交換可以通過單個元組賦值來完成。
>>>?a?=?'foo' >>>?b?=?'bar' >>>?a,?b ('foo',?'bar')>>>?a,?b?=?b,?a>>>?a,?b ('bar',?'foo')這種操作語法足夠精簡,是Java等語言,無法比擬的。
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)
牛逼!Python函數(shù)和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的Python赋值、打包和解包,90%人不清楚的知识点!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对标 VS Code,JetBrains
- 下一篇: 9个必知的Python操作文件/文件夹方