通过理解检查列表项是否在其他列表的 [x][0] 中

Check if item of list is in [x][0] of other list with comprehension

这个让我发疯。 第一个列表包含没有扩展名的文件名。例如:

afilenames = [file1, file2, file3]

第二个列表包含扩展名的文件名:

bfiles = [[file1, .exe], [file2, .txt], [file4, ini]]

我知道想要得到一个列表,其中 returns 来自 afilenames 的文件,包含在 bfiles 中。

预期结果:

[file1, file2]

这是我的尝试,但它只是return废话:

[afile for afile in afilenames for bfile in bfiles if afile in bfile[0]]
x = [a for a in afilenames for b in bfiles if a == b[0]]

你的版本也适用于你提供的示例。

x = [afile for afile in afilenames for bfile in bfiles if afile in bfile]

这也有效。

这应该可以满足您的需求

files = [file for file, _ in bfiles if file in afilenames]