python - 我怎样才能将列表另外压缩到已经压缩的列表中?

标签 python list python-itertools iterable-unpacking

假设我有一个双元素元组列表和一个(不是元组)文字列表,例如整数:

a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
b = [1, 2 ,3]

我想制作一个三元素元组列表,所以我编码如下:

zipped = zip((t[0] for t in a), (t[1] for t in a), b)
assert zipped == [('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

我当前的代码运行良好,但我想知道是否有更高效和优雅的方法,但是我的代码必须迭代和解包每个元组两次。 任何人都可以请教吗?

最佳答案

使用列表理解,元组拆包:

>>> a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
>>> b = [1, 2 ,3]
>>> [(x,y,z) for (x,y), z in zip(a, b)]
[('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

>>> a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
>>> b = [1, 2 ,3]
>>> [x + (y,) for x, y in zip(a, b)]
[('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

关于python - 我怎样才能将列表另外压缩到已经压缩的列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398605/

相关文章:

python - 连接列表的元素对

r - 对列表中数据框中的每个嵌套数据框应用函数

python - 如何不断尝试连接套接字直到它出现?

python - 从 pool.map 进程返回多个列表?

python - 是否可以仅在所有参数运行后才运行拆卸 fixture ?

list - F#中是否有像Array2D一样的List2D

python - 有没有办法有效地计算两个(或更多)迭代器的乘积?

python - 复制链

python - 在 python 中生成列表的条件乘积(组合)

python - Python 重启后 Gzip 输出不同