操作两个2D列表-python 2.7
如果我有这两张名单操作两个2D列表-python 2.7,python,list,2d,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)的每一行,如果(a)的第一个值等于(b)的第一个值 这就是我到目前为止所尝试的 for i in xrange(0,1): for j in xrange(0,3): if b[i][0] == a[j][0]: c[i:] = a[[j:] 由
a = [[1,y,y],[2,x,x],[3,x,x],[4,y,y]
b = [[1,x,x],[4,x,x]
我想把它们结合起来,这样就形成了一个新的列表(c),其中包含了(a)的每一行,如果(a)的第一个值等于(b)的第一个值
这就是我到目前为止所尝试的
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数组中的值不是问题。
我只是真的被困在这个问题上,任何关于我是否在正确的轨道上或者我是否应该尝试其他东西的帮助都将不胜感激 试试这个:
c.append(a[j])
在if if语句中。
可选地,可以考虑使用集合和列表理解。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)
我无法让它工作,尽管它确实解决了我在if语句下有缺陷的逻辑!我找到了另一个解决方案,但无论如何是thx
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)