use*_*879 0 python search list
我正在尝试将与查询项相关的项列表分组.下面是问题的一个例子和我的尝试:
>>> _list=[[1,2,3],[2,3,4]]
>>> querylist=[1,2,4]
>>> relvant=[]
>>> for x in querylist:
for y in _list:
if x in y:
relvant.append(y)
Run Code Online (Sandbox Code Playgroud)
我的输出:
>>> relvant
[[1, 2, 3], [1, 2, 3], [2, 3, 4], [2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[[[1, 2, 3]], [[1, 2, 3], [2, 3, 4]],[[2, 3, 4]]]
Run Code Online (Sandbox Code Playgroud)
问题是在查询项的每个循环之后,我希望将相关列表分组,但我的尝试不是这种情况.
谢谢你的建议.
我认为使用列表理解更清楚:
>>> _list = [[1,2,3],[2,3,4]]
>>> querylist = [1,2,4]
>>> [[l for l in _list if x in l] for x in querylist]
[[[1, 2, 3]], [[1, 2, 3], [2, 3, 4]], [[2, 3, 4]]]
Run Code Online (Sandbox Code Playgroud)
内部表达式[l for l in _list if x in l]描述了包含的所有子列表的列表x.外部表达式的作用是获取x查询列表中所有值的列表.