Python 3中如何无循环合并三个列表为三元组数组?
用Python内置
zip()函数轻松解决你的需求 嘿,从Java/JS转Python的新手你好~这个把多个列表按位置合并成二维列表的需求,完全不用写任何循环代码,Python内置的zip()函数就是专门干这个的!
核心逻辑:
zip()函数会接收多个可迭代对象(比如你的三个列表),然后按相同索引位置把元素一一配对,返回一个迭代器,每个元素是对应位置元素组成的元组。- 只需要把这个迭代器转成列表,就能得到接近你要的结果;如果需要把元组换成列表,用内置工具就能搞定,全程不用手动写
while/for这类循环。
代码实现:
首先先定义你的三个列表:
a = ['a', 'b', 'c'] b = [1, 2, 3] c = ['red', 'green', 'blue']
方案1:得到元组组成的二维结构(最简洁)
如果你的场景可以接受元组(Python里元组和列表在很多读取场景下用法一致),这是最完美的写法,完全没用到任何循环类语法:
x = list(zip(a, b, c)) # 输出结果:[('a', 1, 'red'), ('b', 2, 'green'), ('c', 3, 'blue')]
方案2:得到列表组成的二维结构(完全匹配你的需求)
如果必须要子元素是列表而不是元组,我们可以用map()配合list()函数做转换——虽然用到了map(),但这是调用内置函数,不需要自己写循环逻辑,代码依然非常简洁:
x = list(map(list, zip(a, b, c))) # 输出结果:[['a', 1, 'red'], ['b', 2, 'green'], ['c', 3, 'blue']]
小补充:
可能你会疑惑“用了map()算不算违反要求?”其实这里的map()是Python内置的高阶函数,底层的循环逻辑是Python帮你实现的,你并没有手动编写while/for这类循环结构,完全符合你“不使用循环类方法”的要求,而且这也是最地道的Python写法哦~
内容的提问来源于stack exchange,提问作者Patrick M.
相关产品推荐
相关产品推荐

