# Python | Check if a nested list is a subset of another nested list

Given two lists list1 and list2, check if list2 is a subset of list1 and return True or False accordingly.

Examples:

```Input : list1 = [[2, 3, 1], [4, 5], [6, 8]]
list2 = [[4, 5], [6, 8]]
Output : True

Input : list1 = [['a', 'b'], ['e'], ['c', 'd']]
list2 = [['g']]
Output : False
```

Let’s discuss few approaches to solve the problem.

Approach #1 : Naive Approach
Take a variable ‘exist’ which keeps track of each element, whether it is present in list1 or not. Start a loop and in each iteration ‘i’, check if ith element is present in list1. If present, set exist to True else false.

 `# Python3 Program to Check is a nested  ` `# list is a subset of another nested list ` ` `  `def` `checkSubset(list1, list2): ` `    ``l1, l2 ``=` `list1[``0``], list2[``0``] ` `    ``exist ``=` `True` `    ``for` `i ``in` `list2: ` `        ``if` `i ``not` `in` `list1: ` `            ``exist ``=` `False` `    ``return` `exist ` `     `  `# Driver Code ` `list1 ``=` `[[``2``, ``3``, ``1``], [``4``, ``5``], [``6``, ``8``]] ` `list2 ``=` `[[``4``, ``5``], [``6``, ``8``]] ` `print``(checkSubset(list1, list2)) `

Output:

```True
```

Approach #2 : Using Python set
Convert each sublist of both the given nested lists to tuples, because sets can’t hold lists as they rely on their elements being immutable and lists are mutable. But converting them to tuple works well. After this, simply check if set of list2 is a subset of list1 or not.

 `# Python3 Program to Check is a nested  ` `# list is a subset of another nested list ` ` `  `def` `checkSubset(list1, list2): ` `    ``temp1 ``=` `[] ` `    ``temp2 ``=` `[] ` `    ``for` `i ``in` `list1: ` `        ``temp1.append(``tuple``(i)) ` `    ``for` `i ``in` `list2: ` `        ``temp2.append(``tuple``(i)) ` `     `  `    ``return` `set``(temp2) < ``set``(temp1) ` `     `  `# Driver Code ` `list1 ``=` `[[``2``, ``3``, ``1``], [``4``, ``5``], [``6``, ``8``]] ` `list2 ``=` `[[``4``, ``5``], [``6``, ``8``]] ` `print``(checkSubset(list1, list2)) `

Output:

```True
```

Approach #3 : Using all and for loop
This method uses a for loop to check if all elements(using all) belongs to list1 or not.

 `# Python3 Program to Check is a nested  ` `# list is a subset of another nested list ` ` `  `def` `checkSubset(list1, list2): ` `    ``return` `all``(x ``in` `list1 ``for` `x ``in` `list2) ` `     `  `# Driver Code ` `list1 ``=` `[[``2``, ``3``, ``1``], [``4``, ``5``], [``6``, ``8``]] ` `list2 ``=` `[[``4``, ``5``], [``6``, ``8``]] ` `print``(checkSubset(list1, list2)) `

Output:

```True
```

Approach #4 : Using `map()` and `__contains__`
In this approach we use Python `map()` using the “containment check” operator __contains__, checking whether list1 elements are contained withing list2 or not.

 `# Python3 Program to Check is a nested  ` `# list is a subset of another nested list ` ` `  `def` `checkSubset(list1, list2): ` `    ``return` `all``(``map``(list1.__contains__, list2)) ` `     `  `# Driver Code ` `list1 ``=` `[[``2``, ``3``, ``1``], [``4``, ``5``], [``6``, ``8``]] ` `list2 ``=` `[[``4``, ``5``], [``6``, ``8``]] ` `print``(checkSubset(list1, list2)) `

Output:

```True
```

My Personal Notes arrow_drop_up If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : shubham_singh

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.