1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Python中怎么定義和使用元組-創(chuàng)新互聯(lián)

      本篇內(nèi)容介紹了“Python中怎么定義和使用元組”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

      創(chuàng)新互聯(lián)公司是一家專業(yè)提供景東企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為景東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

      定義和使用元組

      在Python中,元組也是多個(gè)元素按照一定的順序構(gòu)成的序列。元組和列表的不同之處在于,元組是不可變類型,這就意味著元組類型的變量一旦定義,其中的元素不能再添加或刪除,而且元素的值也不能進(jìn)行修改。定義元組通常使用()字面量語(yǔ)法,元組類型支持的運(yùn)算符跟列表是一樣。下面的代碼演示了元組的定義和運(yùn)算。

      # 定義一個(gè)三元組
      t1 = (30, 10, 55)
      # 定義一個(gè)四元組
      t2 = ('駱昊', 40, True, '四川成都')

      # 查看變量的類型
      print(type(t1), type(t2))    #
      # 查看元組中元素的數(shù)量
      print(len(t1), len(t2))      # 3 4

      # 通過(guò)索引運(yùn)算獲取元組中的元素
      print(t1[0], t1[-3])         # 30 30
      print(t2[3], t2[-1])         # 四川成都 四川成都

      # 循環(huán)遍歷元組中的元素
      for member in t2:
         print(member)

      # 成員運(yùn)算
      print(100 in t1)    # False
      print(40 in t2)     # True

      # 拼接
      t3 = t1 + t2
      print(t3)           # (30, 10, 55, '駱昊', 40, True, '四川成都')

      # 切片
      print(t3[::3])      # (30, '駱昊', '四川成都')

      # 比較運(yùn)算
      print(t1 == t3)    # False
      print(t1 >= t3)    # False
      print(t1 < (30, 11, 55))    # True

      一個(gè)元組中如果有兩個(gè)元素,我們就稱之為二元組;一個(gè)元組中如果五個(gè)元素,我們就稱之為五元組。需要提醒大家注意的是,()表示空元組,但是如果元組中只有一個(gè)元素,需要加上一個(gè)逗號(hào),否則()就不是代表元組的字面量語(yǔ)法,而是改變運(yùn)算優(yōu)先級(jí)的圓括號(hào),所以('hello', )和(100, )才是一元組,而('hello')和(100)只是字符串和整數(shù)。我們可以通過(guò)下面的代碼來(lái)加以驗(yàn)證。

      # 空元組
      a = ()
      print(type(a))    #
      # 不是元組
      b = ('hello')
      print(type(b))    #
      c = (100)
      print(type(c))    #
      # 一元組
      d = ('hello', )
      print(type(d))    #
      e = (100, )
      print(type(e))    #

      元組的應(yīng)用場(chǎng)景

      講到這里,相信大家一定迫切的想知道元組有哪些應(yīng)用場(chǎng)景,我們給大家舉幾個(gè)例子。

      例子1:打包和解包操作。

      當(dāng)我們把多個(gè)用逗號(hào)分隔的值賦給一個(gè)變量時(shí),多個(gè)值會(huì)打包成一個(gè)元組類型;當(dāng)我們把一個(gè)元組賦值給多個(gè)變量時(shí),元組會(huì)解包成多個(gè)值然后分別賦給對(duì)應(yīng)的變量,如下面的代碼所示。

      # 打包
      a = 1, 10, 100
      print(type(a), a)    # (1, 10, 100)
      # 解包
      i, j, k = a
      print(i, j, k)       # 1 10 100

      在解包時(shí),如果解包出來(lái)的元素個(gè)數(shù)和變量個(gè)數(shù)不對(duì)應(yīng),會(huì)引發(fā)ValueError異常,錯(cuò)誤信息為:too many values to unpack(解包的值太多)或not enough values to unpack(解包的值不足)。

      a = 1, 10, 100, 1000
      # i, j, k = a             # ValueError: too many values to unpack (expected 3)
      # i, j, k, l, m, n = a    # ValueError: not enough values to unpack (expected 6, got 4)

      有一種解決變量個(gè)數(shù)少于元素的個(gè)數(shù)方法,就是使用星號(hào)表達(dá)式,我們之前講函數(shù)的可變參數(shù)時(shí)使用過(guò)星號(hào)表達(dá)式。有了星號(hào)表達(dá)式,我們就可以讓一個(gè)變量接收多個(gè)值,代碼如下所示。需要注意的是,用星號(hào)表達(dá)式修飾的變量會(huì)變成一個(gè)列表,列表中有0個(gè)或多個(gè)元素。還有在解包語(yǔ)法中,星號(hào)表達(dá)式只能出現(xiàn)一次。

      a = 1, 10, 100, 1000
      i, j, *k = a
      print(i, j, k)          # 1 10 [100, 1000]
      i, *j, k = a
      print(i, j, k)          # 1 [10, 100] 1000
      *i, j, k = a
      print(i, j, k)          # [1, 10] 100 1000
      *i, j = a
      print(i, j)             # [1, 10, 100] 1000
      i, *j = a
      print(i, j)             # 1 [10, 100, 1000]
      i, j, k, *l = a
      print(i, j, k, l)       # 1 10 100 [1000]
      i, j, k, l, *m = a
      print(i, j, k, l, m)    # 1 10 100 1000 []

      需要說(shuō)明一點(diǎn),解包語(yǔ)法對(duì)所有的序列都成立,這就意味著對(duì)字符串、列表以及我們之前講到的range函數(shù)返回的范圍序列都可以使用解包語(yǔ)法。大家可以嘗試運(yùn)行下面的代碼,看看會(huì)出現(xiàn)怎樣的結(jié)果。

      a, b, *c = range(1, 
      10)
      print(a, b, c)
      a, b, c = [1, 10, 100]
      print(a, b, c)
      a, *b, c = 'hello'
      print(a, b, c)

      現(xiàn)在我們可以反過(guò)來(lái)思考一下函數(shù)的可變參數(shù),可變參數(shù)其實(shí)就是將多個(gè)參數(shù)打包成了一個(gè)元組,可以通過(guò)下面的代碼來(lái)證明這一點(diǎn)。

      def add(*args):
         print(type(args), args)
         total = 0
         for val in args:
             total += val
         return total add(1, 10, 20)        # (1, 10, 20)
      add(1, 2, 3, 4, 5)    # (1, 2, 3, 4, 5)

      例子2:交換兩個(gè)變量的值。

      交換兩個(gè)變量的值是編程語(yǔ)言中的一個(gè)經(jīng)典案例,在很多編程語(yǔ)言中,交換兩個(gè)變量的值都需要借助一個(gè)中間變量才能做到,如果不用中間變量就需要使用比較晦澀的位運(yùn)算來(lái)實(shí)現(xiàn)。在Python中,交換兩個(gè)變量a和b的值只需要使用如下所示的代碼。

      a, b = b, a

      同理,如果要將三個(gè)變量a、b、c的值互換,即b賦給a,c賦給b,a賦給c,也可以如法炮制。

      a, b, c = b, c, a

      需要說(shuō)明的是,上面并沒(méi)有用到打包和解包語(yǔ)法,Python的字節(jié)碼指令中有ROT_TWO和ROT_THREE這樣的指令可以實(shí)現(xiàn)這個(gè)操作,效率是非常高的。但是如果有多于三個(gè)變量的值要依次互換,這個(gè)時(shí)候沒(méi)有直接可用的字節(jié)碼指令,執(zhí)行的原理就是我們上面講解的打包和解包操作。

      例子3:讓函數(shù)返回多個(gè)值。

      有的時(shí)候一個(gè)函數(shù)執(zhí)行完成后可能需要返回多個(gè)值,這個(gè)時(shí)候元組類型應(yīng)該是比較方便的選擇。例如,編寫一個(gè)找出列表中大值和最小的函數(shù)。

      def find_max_and_min(items):
         """找出列表中大和最小的元素
         :param items: 列表
         :return: 大和最小元素構(gòu)成的二元組
         """
         max_one, min_one = items[0], items[0]
         for item in items:
             if item > max_one:
                 max_one = item
             elif item < min_one:
                 min_one = item
         return max_one, min_one

      上面函數(shù)的return語(yǔ)句中有兩個(gè)值,這兩個(gè)值會(huì)組裝成一個(gè)二元組然后返回。所以調(diào)用find_max_and_min函數(shù)會(huì)得到這個(gè)二元組,如果愿意也可以通過(guò)解包語(yǔ)法將二元組中的兩個(gè)值分別賦給兩個(gè)變量。

      元組和列表的比較

      這里還有一個(gè)非常值得探討的問(wèn)題,Python中已經(jīng)有了列表類型,為什么還需要元組這樣的類型呢?這個(gè)問(wèn)題對(duì)于初學(xué)者來(lái)說(shuō)似乎有點(diǎn)困難,不過(guò)沒(méi)有關(guān)系,我們先拋出觀點(diǎn),大家可以一邊學(xué)習(xí)一邊慢慢體會(huì)。

      • 元組是不可變類型,不可變類型更適合多線程環(huán)境,因?yàn)樗档土瞬l(fā)訪問(wèn)變量的同步化開銷。關(guān)于這一點(diǎn),我們會(huì)在后面講解多線程的時(shí)候?yàn)榇蠹以敿?xì)論述。

      • 元組是不可變類型,通常不可變類型在創(chuàng)建時(shí)間和占用空間上面都優(yōu)于對(duì)應(yīng)的可變類型。我們可以使用sys模塊的getsizeof函數(shù)來(lái)檢查保存相同元素的元組和列表各自占用了多少內(nèi)存空間。我們也可以使用timeit模塊的timeit函數(shù)來(lái)看看創(chuàng)建保存相同元素的元組和列表各自花費(fèi)的時(shí)間,代碼如下所示。

      import sys
      import timeit

      a = list(range(100000))
      b = tuple(range(100000))
      print(sys.getsizeof(a), sys.getsizeof(b))    # 900120 800056

      print(timeit.timeit('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
      print(timeit.timeit('(1, 2, 3, 4, 5, 6, 7, 8, 9)'))
      • Python中的元組和列表是可以相互轉(zhuǎn)換的,我們可以通過(guò)下面的代碼來(lái)做到。

      # 將元組轉(zhuǎn)換成列表
      info = ('駱昊', 175, True, '四川成都')
      print(list(info))       # ['駱昊', 175, True, '四川成都']
      # 將列表轉(zhuǎn)換成元組
      fruits = ['apple', 'banana', 'orange']
      print(tuple(fruits))    # ('apple', 'banana', 'orange')

      “Python中怎么定義和使用元組”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


      當(dāng)前名稱:Python中怎么定義和使用元組-創(chuàng)新互聯(lián)
      網(wǎng)址分享:http://www.ef60e0e.cn/article/ccejho.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        沙雅县| 时尚| 洪江市| 海丰县| 金塔县| 车险| 江安县| 娱乐| 台东县| 高平市| 张家川| 大石桥市| 天水市| 安新县| 元江| 旬阳县| 宽城| 斗六市| 手游| 汾阳市| 金沙县| 清河县| 昭苏县| 沙湾县| 黎川县| 曲阳县| 无锡市| 亚东县| 合阳县| 四平市| 百色市| 扶绥县| 香港| 昌都县| 巴林左旗| 怀来县| 巴林右旗| 佳木斯市| 呼伦贝尔市| 横峰县| 库尔勒市|