Bootstrap

python zip()函数详解

前言

python 2.x版本的zip()函数会直接返回列表,python3.x版本会返回zip对象,但是不论哪个版本所包含的元素是一样的都是元组类型

zip() 函数是python内置函数之一,可以将多个序列(列表,元组,字典,字符串以及range()区间构成的列表)压缩成一个zip对象,就是将这些序列中对应的位置元素重新组合生成一个个新的元组

zip() 函数的语法格式为:

zip(iterable, ...)

其中 iterable,… 表示多个列表、元组、字典、集合、字符串,甚至还可以为 range() 区间。

示例1:

test_list = [1,2,3]
test_tuple = (1,2,3)

# 返回的结果是对象
print('===object===>": ',zip(test_list,test_tuple))
#使用列表推导式转成列表
print('===list===>": ',[i for i in zip(test_list,test_tuple)])
#直接转成列表
print(list(list(zip(test_list,test_tuple))))

示例2

# 长短不一致,以短的一方为主
test_str = 'python'
test_str1= 'java'

test_dir = {'name':'jibu','age':30}
test_dir1 = {'name':'jibu','age':30}

#字符串压缩
print('===str===>: ',list(zip(test_str,test_str1)))
#这样好像没啥意义
print('===dir===>: ',list(zip(test_dir,test_dir1)))
#可以获取字典的key
print('===dir===>: ',list(zip(test_dir)))

结果
===str===>:  [('p', 'j'), ('y', 'a'), ('t', 'v'), ('h', 'a')]
===dir===>:  [('name', 'name'), ('age', 'age')]
===dir===>:  [('name',), ('age',)]

应用场景
先需要将A,B两个列表转换成字典

A = ["a", "b", "c", "d"]
B = [1, 2, 3, 4]

result = dict(zip(A,B))
print(result)

结果
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

一般在做操作的时候都建议使用python的内置函数,这样效率很高

;