专业编程基础技术教程

网站首页 > 基础教程 正文

Python内置函数精讲精练 zip()

ccvgpt 2024-08-06 12:38:27 基础教程 8 ℃

zip()我们可以简单的称它为打包函数,当需要的时候再进行解压,可有效节省内存,提高效率。

Python内置函数 zip()

zip()利用可迭代对象作为参数,返回一个包含元组的迭代器,元组由每个可迭代对象组成,如:第i个元组由每个可迭代对象的第i个元素组成。

Python内置函数精讲精练 zip()

1. 语法 zip(*iterables)

  • 参数可选,可以没有,可以是一个,也可以是多个
  • 当没有参数时,返回一个空迭代器
  • 当只有一个参数时,返回只有一个元素元组的迭代器
  • 当有多个参数时,如果每个参数的长度不一样,则迭代器结束于最短的那个参数

In [1]:

zip()

Out[1]:

<zip at 0x33bcda0>

In [2]:

zip(range(9))

Out[2]:

<zip at 0x33e24b8>

In [3]:

list (zip(range(9)))

Out[3]:

[(0,), (1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,)]

In [4]:

letter1 = ['A', 'B', 'C', 'D']

In [5]:

letter2 = ['甲', '乙', '丙', '丁']

In [6]:

letter3 = (1, 2, 3, 4, 5, 6)

In [7]:

list(zip(letter1, letter2, letter3))

Out[7]:

[('A', '甲', 1), ('B', '乙', 2), ('C', '丙', 3), ('D', '丁', 4)]

In [8]:

list(zip(letter1, letter2))

Out[8]:

[('A', '甲'), ('B', '乙'), ('C', '丙'), ('D', '丁')]

In [9]:

tuple(zip(letter2, letter1))

Out[9]:

(('甲', 'A'), ('乙', 'B'), ('丙', 'C'), ('丁', 'D'))

In [10]:

list(zip(letter1, letter3))

Out[10]:

[('A', 1), ('B', 2), ('C', 3), ('D', 4)]

In [11]:

dict(zip(letter3, letter2))

Out[11]:

{1: '甲', 2: '乙', 3: '丙', 4: '丁'}

In [12]:

list(zip(range(1,7),'Python'))

Out[12]:

[(1, 'P'), (2, 'y'), (3, 't'), (4, 'h'), (5, 'o'), (6, 'n')]

2. 解压 zip(*zip(iterables))

  • zip(*)经常用来解压一个列表

In [13]:

a, b = zip(*zip(letter1, letter2))

In [14]:

list(zip(*a, *b))

Out[14]:

[('A', 'B', 'C', 'D', '甲', '乙', '丙', '丁')]

In [15]:

f = a, b

In [16]:

list(f)

Out[16]:

[('A', 'B', 'C', 'D'), ('甲', '乙', '丙', '丁')]

In [17]:

list(zip(*f))

Out[17]:

[('A', '甲'), ('B', '乙'), ('C', '丙'), ('D', '丁')]

In [18]:

c, d = zip(*zip(letter3, letter2))

In [19]:

list(c)

Out[19]:

[1, 2, 3, 4]

In [20]:

tuple(d)

Out[20]:

('甲', '乙', '丙', '丁')

In [21]:

e = c, d

In [22]:

dict(zip(*e))

Out[22]:

{1: '甲', 2: '乙', 3: '丙', 4: '丁'}

In [23]:

list(zip(*e))

Out[23]:

[(1, '甲'), (2, '乙'), (3, '丙'), (4, '丁')]

In [24]:

letter32 = zip(letter3, letter2)

In [25]:

list(zip(*letter32))

Out[25]:

[(1, 2, 3, 4), ('甲', '乙', '丙', '丁')]

最近发表
标签列表