我可以用两种方式编写附加行。两者都不会产生期望的结果。有没有办法将其包装在一行中?
选项 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', ['<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83e9ecebedc3e4eee2eaefade0ecee" rel="noreferrer noopener nofollow">[email protected]</a>']], ['project1', 'email2', ['<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d5b7bcb9b995b2b8b4bcb9fbb6bab8" rel="noreferrer noopener nofollow">[email protected]</a>']]]
期望的结果:
[['project1', 'email1', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d0babfb8be90b7bdb1b9bcfeb3bfbd" rel="noreferrer noopener nofollow">[email protected]</a>'], ['project1', 'email2', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abc9c2c7c7ebccc6cac2c785c8c4c6" rel="noreferrer noopener nofollow">[email protected]</a>']]
代码:
emails = [['email1','<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a404542446a4d474b434604494547" rel="noreferrer noopener nofollow">[email protected]</a>'],['email2','<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="94f6fdf8f8d4f3f9f5fdf8baf7fbf9" rel="noreferrer noopener nofollow">[email protected]</a>']]
projects = [['project1', 'email1'], ['project1', 'email2']]
for row in projects:
row.append(x[1] for x in emails if x[0] == row[1])
print projects
最佳答案
在现有代码中,替换这一行:
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', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="53393c3b3d13343e323a3f7d303c3e" rel="noreferrer noopener nofollow">[email protected]</a>'], ['project1', 'email2', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bcded5d0d0fcdbd1ddd5d092dfd3d1" rel="noreferrer noopener nofollow">[email protected]</a>']]
关于python - 如何合并两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289181/