给定一个列表数组a,另一个列表b和d.我如何检查是否在列表元素一个中存在b(或另一个例子,在d)?我知道我可以使用元素的 for循环来检查每个元素是否都是b/d,但有没有API可以快速完成?
a = [[1,4], [17,33,2],[2,33]]
b = [1,4,5,6]
c = [[1,4]]
d = [2,33]
e = [[17,33,2],[2,33]]
Run Code Online (Sandbox Code Playgroud)
让我们这样说,给出列表a和b,如何有效地编写下面的循环?让我们使用列表理解在一行中说.
newls = []
for sublist in a:
newls.append(list(set(sublist).intersection(set(b))))
Run Code Online (Sandbox Code Playgroud)
我怀疑这是否是您真正想要的,但这是您所要求的,即单行列表理解,它产生与 for 循环相同的结果:
newls = [list(set(sublist).intersection(set(b))) for sublist in a]
a = [[1,4], [17,33,2],[2,33]]
b = [1,4,5,6]
>>> c = [list(set(sublist).intersection(set(b))) for sublist in a]
>>> c
[[1, 4], [], []]
Run Code Online (Sandbox Code Playgroud)
您可能不希望其中有空列表,因此:
>>> c = filter(None, [list(set(sublist).intersection(set(b))) for sublist in a])
>>> c
[[1, 4]]
Run Code Online (Sandbox Code Playgroud)
请注意,这不会给出第二种情况的预期结果:
a = [[1,4], [17,33,2],[2,33]]
d = [2,33]
e = filter(None, [list(set(sublist).intersection(set(d))) for sublist in a])
>>> e
[[33, 2], [33, 2]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10629 次 |
最近记录: |