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'}]
哎,以后还是要多学学。