Python如何实现多列表对应位置元素重组生成新列表
实现方案
直接用Python内置的zip函数即可完成按位置重组的需求,代码示例如下:
# 先定义示例中用到的a/b/c变量,避免运行报错 a, b, c = "a", "b", "c" # 原始列表 l1 = [a, b, c] l2 = [1, 2, 3] l3 = [7, 8, 9] # 一行完成重组赋值 l1, l2, l3 = map(list, zip(l1, l2, l3))
运行后打印三个列表即可得到预期输出:
l1: ['a', 1, 7] l2: ['b', 2, 8] l3: ['c', 3, 9]
补充说明
- 如果你的三个列表长度不一致,
zip会默认以最短的列表长度为准截断数据 - 如果你需要以最长列表为准,缺失位置填充自定义默认值,可以使用
itertools.zip_longest,示例如下:
from itertools import zip_longest l1 = [a, b, c, "d"] l2 = [1, 2, 3] l3 = [7, 8] # 缺失位置填充None l1, l2, l3, l4 = map(list, zip_longest(l1, l2, l3, fillvalue=None))
内容的提问来源于stack exchange,提问作者Yael Benarroch
相关产品推荐
相关产品推荐

