欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

zip 函数 如何以最长的可迭代对象,,把 不足的可迭代对象里面的值为空值 AG 有大用 有大大用 有大大大用 chatgpt

在 Python 中,zip 函数默认会以最短的可迭代对象作为其输出的长度,如果你希望以最长的可迭代对象作为基础,并且在较短的可迭代对象中用空值(如 None)填充不足的部分,可以使用 itertools.zip_longest 函数。

itertools.zip_longest 可以接受多个可迭代对象,并返回一个迭代器。对于较短的可迭代对象,如果没有更多的元素,则会使用指定的填充值(默认为 None)填充。以下是一个示例:

python
from itertools import zip_longest

# 假设我们有几个不同长度的列表
list1 = [1, 2, 3]
list2 = ['a', 'b']
list3 = [True, False, True, False]

# 使用 zip_longest 进行打包,并用 None 填充
zipped = zip_longest(list1, list2, list3)

# 将结果转换为列表并打印
zipped_list = list(zipped)
print(zipped_list)

输出结果:

[(1, 'a', True), 
 (2, 'b', False), 
 (3, None, True), 
 (None, None, False)]

指定填充值

如果你希望用特定的填充值,可以通过 fillvalue 参数进行设置:

python
from itertools import zip_longest

list1 = [1, 2, 3]
list2 = ['a', 'b']
list3 = [True, False, True, False]

# 使用 zip_longest,并指定 fillvalue
zipped = zip_longest(list1, list2, list3, fillvalue='EMPTY')

zipped_list = list(zipped)
print(zipped_list)

输出结果:

[(1, 'a', True), 
 (2, 'b', False), 
 (3, 'EMPTY', True), 
 ('EMPTY', 'EMPTY', False)]

说明

  • zip_longest 来自 itertools 模块,因此使用前需要导入。

  • 这个方法可以很方便地创建一个符合你需求的合并列表,尤其在处理不同长度的数据集合时非常有用。


普通分类: