【Python】zip()函数的用法,将多个序列组合后再生成多个序列。接受任意类型,并可以输出任意类型

1.zip()方法在Python3中为了减少内存,zip() 返回的是一个zip对象。可以根据需求,改为list、tuple、dict等
2.如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
3.利用 * 号操作符,可以将元组解压为列表。
 

# -*- coding: utf-8 -*-
# @Time : 2020/5/6 14:47
# @Author : 王怕怕升职记
# @File : test18_zip()用法.py

# 输入2个列表,list2的个数更少一些,输出字典
list1 = [1,2,3,4,5,6]
list2 = ["a","b","c"]
print(dict(zip(list1, list2)))

# 输入3个元组,tuple1的个数更少一些,输出列表
print("-" * 30)
tuple1 = ("刘德华", "古天乐")
tuple2 = ("帅呆了", "酷毙了", "碉堡了")
tuple3 = ("很喜欢", "偶像", "明星")
print(list(zip(tuple1, tuple2, tuple3)))

# 输入2个字典,输出元组
print("-" * 30)
dict1 = {"姓名":"王怕怕","年龄":18}
dict2 = {"性别":"男","职业":"测试工程师"}
print(tuple(zip(dict1, dict2)))

# 赋值n个对象,n=最短元素的个数
print("-" * 30)
a = range(1, 4); b = range(10, 20)
c, d, e = zip(a, b); print(c); print(list(d)); print(tuple(e))

# 将字符串,依次相连,并输出
print("-" * 30)
x = "飞雪连天射白鹿"
print(list(zip(x[:-1], x[1:])))

# 当不确定个数,使用*时
print("-" * 30)
y = ["笑傲江湖","书剑恩仇录","神雕侠侣","侠客行","倚天屠龙记","碧血剑","鸳鸯刀"]
for i in zip(*y):
    print(i)
运行结果:

{1: 'a', 2: 'b', 3: 'c'}
------------------------------
[('刘德华', '帅呆了', '很喜欢'), ('古天乐', '酷毙了', '偶像')]
------------------------------
(('姓名', '性别'), ('年龄', '职业'))
------------------------------
(1, 10)
[2, 11]
(3, 12)
------------------------------
[('飞', '雪'), ('雪', '连'), ('连', '天'), ('天', '射'), ('射', '白'), ('白', '鹿')]
------------------------------
('笑', '书', '神', '侠', '倚', '碧', '鸳')
('傲', '剑', '雕', '客', '天', '血', '鸯')
('江', '恩', '侠', '行', '屠', '剑', '刀')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章