python学习004——zip()函数

004_zip()函数

  • zip() 函数是 Python 内置函数之一,它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组

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

zip(iterable, ...)
  • iterabl – 一个或多个迭代器;

  • 示例01

    a = [1, 2, 3]
    b = [4, 5, 6]
    c = [4, 5, 6, 7, 8]
    a_b_zip = zip(a, b)
    print("type of a_b_zip is{}".format(type(a_b_zip)))
    a_b_zip = list(a_b_zip)
    print(a_b_zip)
    a_c_zip = zip(a, c)
    a_c_zip = list(a_c_zip) 
    # zip()函数的返回对象转换成list不是必须的,只是为了方便输出,list输出很直观
    print(a_c_zip)
    
  • 输出:

type of a_b_zip is<class 'zip'>
[(1, 4), (2, 5), (3, 6)]
[(1, 4), (2, 5), (3, 6)]

zip()函数接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组*),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用号操作符,可以将list unzip(解压)

Python3.0开始,zip()函数已经不返回 list 了,而是返回 iterable(可迭代对象)。这个可迭代对象需要特别注意,只能进行一次迭代遍历,第二次遍历为空了。
  • 示例02
a = [1, 2, 3]
c = [6, 7, 8]
a_c_zip = zip(a,c)
# print(list(a_c_zip))

_ac =zip(* a_c_zip)
print(list(_ac)) # 结果为[(1, 2, 3), (6, 7, 8)]
#如果没把上面的 print(list(a_c_zip)) 注掉,这里的显示结果就是[]了
zip()之后的结果只能“使用一次”
zip()实际上是一个生成器对象,故使用list()获取zip()结果时,已经相当于是完成一次迭代遍历
第二次再次使用list()时迭代已经结束,所以返回[]
  • 示例03

将A,B两个列表转换成字典

A = ["汪二", "张三", "李四", "彭五"]
B = [1, 2, 3, 4]

result = dict(zip(A,B))
print(result)
  • 输出
{'汪二': 1, '张三': 2, '李四': 3, '彭五': 4}

你可能感兴趣的:(python学习,python,学习,开发语言)