1 list01=[1,2,3,4] 2 list02=["a","b","c","d"] 3 4 for itme in zip(list01,list02): 5 print(list(itme))
結果:
[1, 'a']
[2, 'b']
[3, 'c']
[4, 'd']
zip最簡單的用法“列對接”我們可以看到zip可以將列與列組合在一起
我在學習一些如2048等專案的時候會用到矩陣轉至思想的,但沒有zip的時候是很痛苦的,當有了zip的時候我們就可以這樣做:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7] ] list02=[] for itme in zip(list01[0],list01[1],list01[2],list01[3]): list02.append(list(itme)) print(list02)
結果:
[[1, 5, 9, 1], [2, 6, 8, 5], [3, 7, 7, 8], [4, 8, 4, 7]]
這樣就將之前的13行矩陣轉至程式碼簡化為3行:但這樣寫也是不夠靈活,當我們增加一行資料時程式碼有又需要改動:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7], [7,4,5,6] ] list02=[] for itme in zip(list01[0],list01[1],list01[2],list01[3],list01[4]): list02.append(list(itme)) print(list02)
有的同學會想到可變數引數化,這樣也是不可取的,這樣做程式碼有將變得臃腫,我們不如用拆包和裝包的思想:
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7], [7,4,5,6] ] list02=[] for itme in zip(*list01): list02.append(list(itme)) print(list02)
當到這一步的時候我們就可以用Python的特色-----列表推導式
list01=[ [1,2,3,4], [5,6,7,8], [9,8,7,4], [1,5,8,7] ] list02=[list(itme) for itme in zip(*list01)]
print(list02)
結果:
[[1, 5, 9, 1], [2, 6, 8, 5], [3, 7, 7, 8], [4, 8, 4, 7]]