如何合并两个清单 - python

我可以用两种方式编写追加行。均未产生预期的结果。有没有一种方法可以将其包装成一行?

选项1:

row.append(x[1] for x in emails if x[0] == row[1]) 

产量:

[['project1', 'email1', <generator object <genexpr> at 0x0227D670>], ['project1', 'email2', <generator object <genexpr> at 0x022EB8A0>]]

选项2:

row.append([x[1] for x in emails if x[0] == row[1]]) 

产量:

[['project1', 'email1', ['[email protected]']], ['project1', 'email2', ['[email protected]']]]

预期结果:

[['project1', 'email1', '[email protected]'], ['project1', 'email2', '[email protected]']]

码:

emails = [['email1','[email protected]'],['email2','[email protected]']]

projects = [['project1', 'email1'], ['project1', 'email2']]

for row in projects:
    row.append(x[1] for x in emails if x[0] == row[1])
print projects

python大神给出的解决方案

在您现有的代码中,替换这一行:

row.append(x[1] for x in emails if x[0] == row[1])

带有:

row.extend(x[1] for x in emails if x[0] == row[1])

一线解决方案

或者,消除循环并将代码压缩成一行:

>>> projects = [  row + [x[1] for x in emails if x[0] == row[1]] for row in projects ]
>>> print projects 
[['project1', 'email1', '[email protected]'], ['project1', 'email2', '[email protected]']]