1. 程式人生 > >Python中的zip函式

Python中的zip函式

zip函式的不少資料寫的怪麻煩的,反正我查了很多次,都沒有記住這個函式是幹什麼,這導致我造了不少的輪子,走了不少的彎路。

後來再回頭查資料,有些明白了。其實zip函式就把幾個陣列對齊,然後按列輸出。。為了好理解,自己也寫了一個zip函式。

 1 header = ['name', 'sex', 'age']
 2 data = ['victor', 'male', '18']
 3 
 4 print('-'*20 + 'zip function created by me. it is stuip' +'-'*20 )
 5 def my_zip(list1,list2):
 6     for
i in range(min(len(list1),len(list2))): 7 yield list1[i],list2[i] 8 print(list(my_zip(header, data))) 9 print('-'*20 + 'standard zip function' +'-'*20 ) 10 print(list(zip(header, data)))

對應的輸出如下。。看樣子是差不多的。

1 --------------------zip function created by me. it is stuip--------------------
2
[('name', 'victor'), ('sex', 'male'), ('age', '18')] 3 --------------------standard zip function-------------------- 4 [('name', 'victor'), ('sex', 'male'), ('age', '18')]

 

zip函式在我實際工作中用的最多就是從資料庫中拿到資料之後,把這些資料組成一個dict的list。。 我把之前造的輪子,和zip函式對比了一下,感覺自己就是一個傻逼。

 1 header = ['name', 'sex', '
age'] 2 data = [['victor', 'male', '18'],['john', 'femal', '29'],['Dick', 'male', '33']] 3 print('-'*20 + 'stupid way used by me before' +'-'*20 ) 4 data_dict = [] 5 for row in data: 6 item = {} 7 for col in range(len(header)): 8 item[header[col]] = row[col] 9 data_dict.append(item) 10 print(data_dict) 11 12 # test zip: 13 print('-'*20 + 'we test zip function first' +'-'*20 ) 14 for row in data: 15 print(zip(header, row)) 16 print(list(zip(header, row))) 17 print(dict(zip(header, row))) 18 19 # right way to do it 20 print('-'*20 + 'right way is to use function zip' +'-'*20 ) 21 data_dict = [dict(zip(header, row)) for row in data] 22 print(data_dict)

對應的輸出如下:

 1 --------------------stupid way used by me before--------------------
 2 [{'sex': 'male', 'name': 'victor', 'age': '18'}, {'sex': 'femal', 'name': 'john', 'age': '29'}, {'sex': 'male', 'name': 'Dick', 'age': '33'}]
 3 --------------------we test zip function first--------------------
 4 <zip object at 0x0000000004CA6588>
 5 [('name', 'victor'), ('sex', 'male'), ('age', '18')]
 6 {'sex': 'male', 'name': 'victor', 'age': '18'}
 7 <zip object at 0x0000000004CA6588>
 8 [('name', 'john'), ('sex', 'femal'), ('age', '29')]
 9 {'sex': 'femal', 'name': 'john', 'age': '29'}
10 <zip object at 0x0000000004CA6588>
11 [('name', 'Dick'), ('sex', 'male'), ('age', '33')]
12 {'sex': 'male', 'name': 'Dick', 'age': '33'}
13 --------------------right way is to use function zip--------------------
14 [{'sex': 'male', 'name': 'victor', 'age': '18'}, {'sex': 'femal', 'name': 'john', 'age': '29'}, {'sex': 'male', 'name': 'Dick', 'age': '33'}]

哎,以後還是要多學學。