第一个列表包含带有扩展名的文件名:
afiles = [['file1', '.exe'], ['file2', '.txt']]
第二个列表包含不带扩展名的文件名。例如:
bfiles = ['file1', 'file2', 'file3', 'file4']
我知道想知道afile中缺少bfile的哪些文件。预期结果应为:
['file3', 'file4']
我想理解这一点。
答案 0 :(得分:2)
您可以尝试这种简单的列表理解:)
case ADD_STUDENT :
return {
...state,
studentList: state.studentList.concat(action.student)
}
或者更好的是,您只需分配>>> afiles = [['file1', '.exe'], ['file2', '.txt']]
>>> bfiles = ['file1', 'file2', 'file3', 'file4']
>>> [x for x in bfiles if x not in (y[0] for y in afiles)]
['file3', 'file4']
文件,而无需扩展名,例如
afiles
答案 1 :(得分:2)
只需检查bfile的项目是否无法在afile的任何零索引中找到。
afiles = [['file1', '.exe'], ['file2', '.txt']]
bfiles = ['file1', 'file2', 'file3', 'file4']
result = [file for file in bfiles if not any(file == afile[0] for afile in afiles)]
['file3', 'file4']
答案 2 :(得分:2)
带有itertools.chain
的列表理解:
from itertools import chain
afiles = [['file1', '.exe'], ['file2', '.txt']]
bfiles = ['file1', 'file2', 'file3', 'file4']
print([x for x in bfiles if x not in chain.from_iterable(afiles)])
# ['file3', 'file4']
答案 3 :(得分:1)
您可以使用设置方法difference()
:
set(bfiles).difference(i[0] for i in afiles)
# {'file4', 'file3'}