最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python元組拆包和具名元組解析實例詳解

 更新時間:2018年03月26日 10:57:54   投稿:mrr  
這篇文章主要介紹了Python元組拆包和具名元組解析,下面的內容就圍繞元組作為數據記錄屬性展開,并介紹帶字段名的具名元組函數namedtuple,列表屬性不再本文中敘述。

前言

在Python中元組是一個相較于其他語言比較特別的一個內置序列類型。有些python入門教程把元組成為“不可變的列表”,這種說法是不完備的,其并沒有完整的概括元組的特點。除了用作不可變的列表,它還可以用于沒有字段名的數據記錄。下面的內容就圍繞元組作為數據記錄屬性展開,并介紹帶字段名的具名元組函數namedtuple,列表屬性不再本文中敘述。

元組對于數據的記錄

元組中的每個元素都存放了記錄中一個字段的數據,外加這個字段的位置,正是這個位置信息給數據賦予了意義。

下面的一段代碼就演示了元組被當作記錄來使用。如果在任何的表達式里我們在元組內對元素排序,這些元素多攜帶的信息就會丟失,因為這些信息是跟它們的位置強關聯的。

#把元組作記錄
  >>> xiaoming, xiaohua = (16, 18)
  >>> xiaoming
  16
  >>> students_info = [('xiaoming', 16), ('xiaohua', 18), ('hanmeimei', 20)]
  >>> for student in students_info:
    print('%s is %d years old.'%student)
  xiaoming is 16 years old.
  xiaohua is 18 years old.
  hanmeimei is 20 years old.
  >>>

在這個示例中,我們把元組(16,18)里的元素分別賦值給變量xiaoming,xiaohua。同樣在for循環(huán)中,一個%運算符就把student元組里的元素對應到了Print函數的格式字符串空檔中。這兩個都是元組拆包的應用。
元組拆包可以應用到任何可迭代對象上,唯一的硬性要求是,被可迭代對象中的元素數量必須要跟接受這些元素的元組的空檔數一致。除非用*來表示忽略多余的元素。

元組拆包

最好辨認的元組拆包形式就是平行賦值 ,也就是把一個可迭代對象里的元素,一并賦值到由對應的變量組成的元組中。例如:

>>> age_list = (16,18)
  >>> xiaoming, xiaohua = age_list #這里就是元組拆包

另一個我們熟悉的平行賦值的例子就是交換兩個變量的值:

>>> a, b = b, a #Python就是如此的優(yōu)雅

還可以用*運算符把一個可迭代對象拆開作為函數的參數:

>>> divmod(20,8)
  (2, 4)
  >>> t = (20, 8)
  >>> divmod(*t)
  (2, 4)
  >>> quotient, remainder = divmod(*t)
  >>> quotient, remainder
  (2, 4)

用*來處理剩下的元素

在Python中,函數用*args來獲取不確定數量的參數算是一種經典寫法了。在Python3中,這個概念被擴展到了平行賦值中:

>>> a, b, *rest = range(5)
  >>> a, b, rest
  (0, 1, [2, 3, 4])
  >>> a, b, *rest = range(3)
  >>> a, b, rest
  (0, 1, [2])
  >>> a, b, *rest = range(2)
  >>> a, b, rest
  (0, 1, [])

在平行賦值中,*運算符前綴智能用在一個變量名前面,但是這個變量可以出現在賦值表達式的任意位置:

>>> a, *others, b, c = range(5)
  >>> a, others, b, c
  (0, [1, 2], 3, 4)
  >>> *others, a, b, c = range(5)
  >>> others, a, b, c
  ([0, 1], 2, 3, 4)

具名元組

在Python中,collections.namedtuple是一個工廠函數,它可以用來構建一個帶字段名的元組和一個有名字的類。
用namedtuple構建的類的實例所消耗的內存跟元組是一樣的,因為字段名都被存在對應的類里面。這個實例跟普通的對象實例比起來也要小一些,因為python不會用 dict 來存放這些實例的屬性。

還是使用上面的小明和小華的例子來展示一下具名元組:

>>> from collections import namedtuple
  >>> Student = namedtuple('Student', 'name age gender')
  >>> xiaoming = Student('xiaoming', 16, 'boy')
  >>> xiaoming
  Student(name='xiaoming', age=16, gender='boy')
  >>> xiaoming.age
  16
  >>> xiaoming[2]
  'boy'

Student = namedtuple(‘Student', ‘name age gender'),創(chuàng)建一個具名元組,需要兩個參數,一個是類名,另一個是類的各個字段名。后者可以是有多個字符串組成的可迭代對象,或者是有空格分隔開的字段名組成的字符串(比如本示例)。具名元組可以通過字段名或者位置來獲取一個字段的信息。

具名元組的特有屬性

類屬性_fields:包含這個類所有字段名的元組

>>> xiaoming._fields
  ('name', 'age', 'gender')

類方法_make(iterable):接受一個可迭代對象來生產這個類的實例,作用等價于Student

(*xiaohua_info)
  >>> xiaohua_info = ('xiaohua', 18, 'girl')
  >>> xiaohua = Student._make(xiaohua_info)
  >>> xiaohua
  Student(name='xiaohua', age=18, gender='girl')

實例方法_asdict():把具名元組以collections.OrdereDict的形式返回,可以利用它來把元組里的信息友好的展示出來

>>> xiaohua._asdict()
  OrderedDict([('name', 'xiaohua'), ('age', 18), ('gender', 'girl')])
  >>> for key, value in xiaohua._asdict().items():
    print(key,':',value)
  name : xiaohua
  age : 18
  gender : girl

總結

以上所述是小編給大家介紹的Python元組拆包和具名元組解析實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Python使用Mechanize模塊編寫爬蟲的要點解析

    Python使用Mechanize模塊編寫爬蟲的要點解析

    這篇文章主要介紹了Python使用Mechanize模塊編寫爬蟲的要點解析,作者還講解了Mechanize程序占用內存過高問題的相關解決方法,需要的朋友可以參考下
    2016-03-03
  • 用python批量生成文件夾的實現方法舉例

    用python批量生成文件夾的實現方法舉例

    這篇文章主要介紹了使用Python腳本批量生成文件夾的方法,可以用于創(chuàng)建順序文件夾或嵌套文件夾,通過設置路徑和循環(huán),可以自動命名并創(chuàng)建文件夾,提高工作效率,需要的朋友可以參考下
    2025-03-03
  • python?序列去重并保持原始順序操作

    python?序列去重并保持原始順序操作

    這篇文章主要介紹了python序列去重并保持原始順序操作,文章圍繞了python?序列去重的相關資料展開詳細介紹,需要的小伙伴可以參考一下,希望對你的有所幫助
    2022-03-03
  • 學習python分支結構

    學習python分支結構

    在本篇文章中小編給大家分享了關于python分支結構的相關知識點和相關內容,需要的朋友們學習下。
    2019-05-05
  • Django model重寫save方法及update踩坑詳解

    Django model重寫save方法及update踩坑詳解

    這篇文章主要介紹了Django model重寫save方法及update踩坑詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python一鍵查找iOS項目中未使用的圖片、音頻、視頻資源

    Python一鍵查找iOS項目中未使用的圖片、音頻、視頻資源

    這篇文章主要介紹了Python-一鍵查找iOS項目中未使用的圖片、音頻、視頻資源,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2019-08-08
  • Python3中多線程編程的隊列運作示例

    Python3中多線程編程的隊列運作示例

    這篇文章主要介紹了Python3中多線程編程的隊列運作示例,文中用一個簡單的例子展示了Python下嘗試多線程時隊列的進站出站是如何運作的,需要的朋友可以參考下
    2015-04-04
  • python爬蟲爬取某網站視頻的示例代碼

    python爬蟲爬取某網站視頻的示例代碼

    這篇文章主要介紹了python爬蟲爬取某網站視頻的示例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 一次python-flask藍圖的踩坑記錄

    一次python-flask藍圖的踩坑記錄

    簡單來說,藍圖就是一個存儲操作路由映射方法的容器,主要用來實現客戶端請求和URL相互關聯的功能,在Flask中,使用藍圖可以幫助我們實現模塊化應用的功能,這篇文章主要給大家介紹了關于python-flask藍圖踩坑的相關資料,需要的朋友可以參考下
    2021-08-08
  • 使用python實現學生信息管理系統(tǒng)

    使用python實現學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了使用python實現學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02

最新評論

泸州市| 天水市| 宣威市| 盐边县| 大港区| 玉树县| 玉树县| 河南省| 建水县| 扶风县| 滦平县| 芷江| 大荔县| 江口县| 乾安县| 泽普县| 长沙县| SHOW| 会同县| 商都县| 罗江县| 丹阳市| 扶沟县| 延川县| 新沂市| 普宁市| 岑巩县| 北京市| 杭锦旗| 海林市| 若尔盖县| 教育| 信丰县| 合阳县| 梁河县| 花莲市| 闻喜县| 华阴市| 元阳县| 喀喇沁旗| 镇原县|