使用预定格式将某些列表组合成另一个列表的正确方法是什么?
说我有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)]
这样的东西但是没有用。
答案 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))]
但如果你想更优雅地做到这一点,请坚持使用拉链建议。