操纵两个2D列表 - python 2.7

时间:2014-06-02 15:19:45

标签: python list 2d

如果我有这两个清单......

a = [[1,y,y],[2,x,x],[3,x,x],[4,y,y]
b = [[1,x,x],[4,x,x]

我希望将它们组合起来,形成一个新的列表(c),如果(a)的第一个值等于(b)的第一个值,则包含(a)的每一行

c = [[1,y,y],[4,y,y]]

这是我到目前为止所尝试过的......

for i in xrange(0,1):
    for j in xrange(0,3):
        if b[i][0] == a[j][0]:
           c[i:] = a[[j:]
由于(a)中的数据类型,

重写c数组中的值不是问题。 我只是真的坚持这一点,任何关于我是否在正确的轨道上或如果我应该尝试别的东西的帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

试试这个:

c.append(a[j])
在你的IF语句中

答案 1 :(得分:0)

或者,您可以考虑使用集合和列表推导。

a = [[1,'y','y'],[2,'x','x'],[3,'x','x'],[4,'y','y']]
b = [[1,'x','x'],[4,'x','x']]

b0s = set(l[0] for l in b)

c = [l for l in a if l[0] in b0s]

print(c)