欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中的 zip函數詳解及用法舉例

 更新時間:2020年02月16日 11:08:04   作者:淋哥  
zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。這篇文章主要介紹了python中的 zip函數詳解及用法舉例,需要的朋友可以參考下

python中zip()函數用法舉例

定義:zip([iterable, ...])

  zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓),看下面的例子就明白了:

示例1

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
 
xyz = zip(x, y, z)

print xyz運行的結果是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

示例2,在兩個list長度不相等時的情況:

x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)

print xy運行的結果是:

[(1, 4), (2, 5), (3, 6)]

示例3

>>> name=('jack','beginman','sony','pcky')
>>> age=(2001,2003,2005,2000)
>>> for a,n in zip(name,age):
  print a,n

輸出:

jack 2001 beginman 2003 sony 2005 pcky 2000

示例4,只有一個list的情況:

x = [1, 2, 3]
x = zip(x)

print x運行的結果是:

[(1,), (2,), (3,)]

示例5:

搭配for循環(huán),支持并行迭代操作方法 zip()方法用在for循環(huán)中,就會支持并行迭代:

  l1 = [2,3,4]
  l2 = [4,5,6]
  for (x,y) in zip(l1,l2):
     print x,y,'--',x*y
2 4 -- 8
3 5 -- 15
4 6 -- 24

其實它的工作原理就是使用了zip()的結果,在for循環(huán)里解包zip結果中的元組,用元組賦值運算。就好像(x,y)=(2,6),賦值、序列解包操作。在對文件的操作中我們也會用到遍歷,例如Python遍歷文件夾目錄與文件操作,就是很方便實用的。

1

示例6:二維矩陣變換(矩陣的行列互換)

  比如我們有一個由列表描述的二維矩陣 ,a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],通過python列表推導的方法,我們也能輕易完成這個任務

 

 print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

  另外一種讓人困惑的方法就是利用zip函數:  

  >>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]   >>> zip(*a) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]   >>> map(list,zip(*a))

  [[1, 4, 7], [2, 5, 8], [3, 6, 9]]   

  這種方法速度更快但也更難以理解,將list看成tuple解壓,恰好得到我們“行列互換”的效果,再通過對每個元素應用list()函數,將tuple轉換為list

示例7:以指定概率獲取元素

>>> import random 
  >>> def random_pick(seq,probabilities): 
   x = random.uniform(0, 1) 
   cumulative_probability = 0.0 
   for item, item_probability in zip(seq, probabilities): 
   cumulative_probability += item_probability 
   if x < cumulative_probability: 
     break 
   return item 
  >>> for i in range(15): 
  random_pick("abc",[0.1,0.3,0.6]) 
  'c' 'b' 'c' 'c' 'a' 'b' 'c' 'c' 'c' 'a' 'b' 'b' 'c' 'a' 'c'

這個函數有個限制,指定概率的列表必須和元素一一對應,而且和為1,否則這個函數可能不能像預想的那樣工作。稍微解釋下,先利用random.uniform()函數生成一個0-1之間的隨機數并復制給x,利用zip()函數將元素和他對應的概率打包成tuple,然后將每個元素的概率進行疊加,直到和大于x終止循環(huán)

這樣,”a”被選中的概率就是x取值位于0-0.1的概率,同理”b”為0.1-0.4,”c”為0.4-1.0,假設x是在0-1之間平均取值的,顯然我們的目的已經達到

總結

以上所述是小編給大家介紹的python中的 zip函數詳解及用法舉例,希望對大家有所幫助!

相關文章

  • 對python PLT中的image和skimage處理圖片方法詳解

    對python PLT中的image和skimage處理圖片方法詳解

    今天小編就為大家分享一篇對python PLT中的image和skimage處理圖片方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python中threading開啟關閉線程操作

    python中threading開啟關閉線程操作

    這篇文章主要介紹了python中threading開啟關閉線程操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python使用PyQt5的簡單方法

    python使用PyQt5的簡單方法

    這篇文章主要介紹了python使用PyQt5的簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • Python破解網站登錄密碼腳本

    Python破解網站登錄密碼腳本

    這篇文章主要為大家介紹一個簡單的Python暴力破解網站登錄密碼腳本,文中的過程講解詳細,對我們學習Python有一定的幫助,感興趣的可以學習一下
    2022-01-01
  • Tensorflow與Keras自適應使用顯存方式

    Tensorflow與Keras自適應使用顯存方式

    這篇文章主要介紹了Tensorflow與Keras自適應使用顯存方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • TensorFLow 不同大小圖片的TFrecords存取實例

    TensorFLow 不同大小圖片的TFrecords存取實例

    今天小編就為大家分享一篇TensorFLow 不同大小圖片的TFrecords存取實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Pytorch 如何訓練網絡時調整學習率

    Pytorch 如何訓練網絡時調整學習率

    這篇文章主要介紹了Pytorch 如何訓練網絡時調整學習率的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python TCP接收數據不全的問題解決

    Python TCP接收數據不全的問題解決

    本文主要介紹了Python TCP接收數據不全的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Python實現base64編碼的圖片保存到本地功能示例

    Python實現base64編碼的圖片保存到本地功能示例

    這篇文章主要介紹了Python實現base64編碼的圖片保存到本地功能,涉及Python針對base64編碼解碼與圖形文件輸出保存相關操作技巧,需要的朋友可以參考下
    2018-06-06
  • 使用 Python 實現簡單的 switch/case 語句的方法

    使用 Python 實現簡單的 switch/case 語句的方法

    這篇文章主要介紹了用 Python 實現簡單的 switch/case 語句的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論