MST

星途 面试题库

面试题:Python列表值创新应用之组合生成

给定两个Python列表 `list1 = [1, 2, 3]` 和 `list2 = ['a', 'b', 'c']`,请使用创新的思路,将这两个列表中的值组合生成一个新的列表,新列表的元素是元组,元组的第一个值来自 `list1`,第二个值来自 `list2`,且要考虑如果两个列表长度不一致时如何处理(例如 `list1 = [1, 2, 3]`,`list2 = ['a', 'b']`),并说明这样处理的思路。
42.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

可以使用itertools.zip_longest函数来解决这个问题,它会将两个可迭代对象按最长的长度进行配对,缺失的值用fillvalue填充,代码如下:

import itertools

list1 = [1, 2, 3]
list2 = ['a', 'b']
new_list = list(itertools.zip_longest(list1, list2, fillvalue=None))
print(new_list)

处理思路:

  1. 当两个列表长度一致时,itertools.zip_longest 可以正常将两个列表的对应位置元素配对成元组。
  2. 当两个列表长度不一致时,itertools.zip_longest 会按照最长的列表长度进行配对,短列表缺失的位置用指定的fillvalue(这里设置为None)填充,这样既保证了两个列表元素都能参与配对,又能清晰表示出缺失值的情况。