以预定格式组合列表

时间:2017-03-25 16:12:22

标签: python list

使用预定格式将某些列表组合成另一个列表的正确方法是什么?

说我有a = [1, 2, 3], b = [4, 5, 6], c = [7, 8, 9]

我想创建一个如下列表:comb = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

我试过像comb = [(%s, %s, %s) %(a[i], b[i], c[i]) for i in range(3)]这样的东西但是没有用。

3 个答案:

答案 0 :(得分:2)

首先,您初始化列表的方式不正确,就组合列表而言,您可以使用zip作为:

a, b, c = [1, 2, 3], [4, 5, 6], [7, 8, 9]
print zip(a, b, c)
>>> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

答案 1 :(得分:0)

Python提出了你想要的关键字zip

以下是适用于Python 2和Python 3的示例

a = [1, 2, 3]; b = [4, 5, 6]; c = [7, 8, 9]
abc = list(zip(a,b,c))
print(abc)

答案 2 :(得分:-1)

为什么你有这个:(%s,%s,%s)?这是用于字符串的东西。对于元组赋值(如您所愿),它几乎与分配列表相同。即:

z = (1, 2, 3)

如果你想使用列表推导,就像你想要做的那样,你真的几乎就在那里。只是摆脱那些%s的东西,所以它是这样的:

comb  = [(a[i], b[i], c[i]) for i in range(len(a))]

但如果你想更优雅地做到这一点,请坚持使用拉链建议。