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'}]

哎,以后还是要多学学。

猜你喜欢

转载自www.cnblogs.com/wbwj/p/9939954.html