如何检查嵌套列表的每个子列表中是否存在一个值?
我有一个列表,其中包含多个子列表,每个列表都充满了随机整数。我试图找出一种方法来检查每个sublist中出现的第一个sublist中的哪些元素,这是我到目前为止提出的:
for element in sublist1:
x = 1
for i in range(len(list_of_sublists)-1):
if element in list_of_sublists[i]:
x = x + 1
elif element not in list_of_sublists[i]:
x = x - 1
if x == len(allDocIDs):
listOfDocumentIDs.append(element)
else:
pass
当有2个sublists时,它似乎可以使用,但是一旦有3个或更多似乎该代码忽略了它们的存在。是否有一种更简单的(功能更大)的方法来执行此任务?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过第一个sublist进行循环(
set
只能确保for循环中的每个i在唯一的界限,以便您不检查值两次),并检查每个值是否在每个sublist中都有全部
:输出:
或与列表理解:
输出:
You can do loop through the first sublist (
set
just ensures that every i in the for loop is unique so you don't check a value twice) and check if each value is in every sublist withall
:Output:
Or with list comprehension:
Output:
如果该元素在第一个统一者和所有其他标准列表中,则在所有统一的人中。因此,您的问题等同于询问所有列表中的项目。您可以通过将所有标准列表的交集来有效地使用集合来做到这一点:
这假设您不在乎第一个Sublist中的重复项。如果您 do 关心第一个sublist中的重复项,则可以访问其余的Sublist的交叉点,然后使用列表理解来过滤第一个元素:
If the element is in the first sublist and in all the other sublists, then it's in all sublists. So your questions is equivalent to asking which items are in all lists. You can do this efficiently with sets by taking the intersection of all the sublists:
This assumes you don't care about duplicates in the first sublist. If you do care about duplicates in the first sublist, you can take the intersection of the rest of the sublist and then use a list comprehension to filter the elements from the first: