【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)
------------------------------
[('飛', '雪'), ('雪', '連'), ('連', '天'), ('天', '射'), ('射', '白'), ('白', '鹿')]
------------------------------
('笑', '書', '神', '俠', '倚', '碧', '鴛')
('傲', '劍', '雕', '客', '天', '血', '鴦')
('江', '恩', '俠', '行', '屠', '劍', '刀')

 

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