Python代码阅读(第17篇):列表元素按位合并

本文探讨了Python代码实现将多个列表按位置合并的功能,生成一个嵌套列表,当输入列表长度不一时,使用指定填充值。代码来源于30-seconds-of-python,通过list comprehension确定最长列表长度,并利用循环和填充值完成合并操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

本篇阅读的代码实现了多个列表按照元素的位置依序合并成一个新的嵌套列表。每个子列表都是原列表对应位置的元素。zip()itertools.zip_longest()提供了类似于这段代码的功能。

本篇阅读的代码片段来自于30-seconds-of-python

merge

def merge(*args, fill_value=None):
  max_length = max([len(lst) for lst in args])
  result = []
  for i in range(max_length):
    result.append([
      args[k][i] if i < len(args[k]) else fill_value for k in range(len(args))
    ])
  return result

# EXAMPLES
merge(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]]
merge(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]]
merge(['a'], [1, 2], [True, False], fill_value = '_') # [['a', 1, True], ['_', 2, False]]

merge函数接收多个列表和一个填充值fill_value,返回一个嵌套列表。该嵌套列表的元素个数等于最长的输入列表的长度,每个子列表的元素依次来自于输入列表的相同位置,输入列表的元素不足的情况下,使用填充值代替。也就是说merge_list[0]是一个列表,其中的元素依次为输入列表索引为0的元素。

函数使用max结合list comprehension得到参数中最长的列表的长度。结合使用range()max_length变量来循环。如果一个列表的长度短于max_length,则剩余的项目使用fill_value(默认为None)来进行填充。

函数调用同时使用了“关键字参数”和“可变参数”的方式。在第9篇的时候介绍了单独使用“可变参数”调用的方式。一般来说,这些“可变参数”将在形式参数列表的末尾,因为它们收集传递给函数的所有剩余输入参数。出现在*args参数之后的任何形式参数都是“仅限关键字参数”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值