简体   繁体   中英

find occurrences of elements of a list in a list of list

i have a list [1, 2, 3]

i want to find number of times the elements of this list appears in a list of list:

lol = [[1, 2, 4, 5], [2, 3, 1, 2], [1, 2, 3], [3, 2, 6, 7, 1], [1, 4, 2, 6, 3]]

occurrences = 4

What I'm doing currently is the following:

a = [1, 2, 3]
lol = [[1, 2, 4, 5], [2, 3, 1, 2], [1, 2, 3], [3, 2, 6, 7, 1], [1, 4, 2, 6, 3]]

def get_count(a, b):
    a = set(a)
    return sum([a.issubset(x) for x in b])

print(get_count(a, lol))

This method works but is quite slow when I have 100s of 1000s of list to compare with a list of list ( lol remains static!)

can we also preserve the "order" of the elements? there can be other elements in between. in this case occurrences will be 2 for the above case

Why not try:

testlist = lol                  ##Create a test list that we will work with

for i in range len(testlist):   ##Start a loop that will repeat length of testlist times
    if a in testlist:           ##If/When it finds the first occurrence of the list a
        Occurrences =+ 1         ##It adds 1 to the amount off occurences
        Pos = testlist.index(a)
        testlist.del(Pos)       ##It deletes the instance from the list.

This should work

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM