91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中使用 zip函數

發布時間:2021-03-15 17:47:37 來源:億速云 閱讀:195 作者:Leah 欄目:開發技術

怎么在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循環,支持并行迭代操作方法 zip()方法用在for循環中,就會支持并行迭代:

  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循環里解包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終止循環

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

离岛区| 万山特区| 合水县| 扶风县| 镇宁| 黄梅县| 永吉县| 邛崃市| 安庆市| 聊城市| 喀什市| 竹山县| 轮台县| 乾安县| 湖州市| 安陆市| 揭东县| 兰溪市| 黄骅市| 鄂托克旗| 慈溪市| 株洲市| 合山市| 武强县| 双峰县| 苏州市| 会理县| 司法| 阜南县| 丁青县| 荆州市| 仙居县| 城市| 临沧市| 永川市| 浮梁县| 游戏| 南昌市| 昭通市| 嘉定区| 英德市|