Python-在列表列表中找到列表

时间:2019-03-22 07:41:39

标签: python list

我有一个列表列表,例如,每个列表可以有任意长度:

list_of_lists = [[2, 2, 2, 3], [2, 3, 4], [2, 2, 6]]

我需要一种在列表列表中搜索特定列表的方法。例如,一个contains()函数将在下面返回True

list_of_lists.contains([2, 2, 6])

我看到了可以将“内部列表”转换成元组的答案,但这对我没有帮助。那里有一个具有此功能的图书馆吗?

6 个答案:

答案 0 :(得分:1)

使用in

list_of_lists = [[2,2,2,3],[2,3,4],[2,2,6]]

if [2,2,6] in list_of_lists:
    print("found")
else:
    print("not found")

输出

found

类似地,假设嵌套列表中的最后一个列表为:[2, 2, 6, 8]

list_of_lists = [[2,2,2,3],[2,3,4],[2,2,6,8]]

if [2,2,6] in list_of_lists:
    print("found")
else:
    print("not found")

输出

not found

编辑

虽然我想这么做,但是如果您想为列表的存在提供一个布尔值:

def chkList(lst):
    return True if lst in list_of_lists else False

list_of_lists = [[2,2,2,3],[2,3,4],[2,2,6]]
print(chkList([2,2,6]))

输出

True

答案 1 :(得分:1)

使用in

print([2,2,6] in list_of_lists)

<罢工> 或使用__contains__

print(list_of_lists.__contains__([2,2,6]))

(请勿使用__contains__,强烈建议)

答案 2 :(得分:1)

有多个答案建议使用in==来查看列表是否包含元素(另一个列表)。
但是,如果您不关心要比较的列表中元素的顺序,则可以采用以下解决方案。

import collections

# 'list_' is the list we are searching for in a bigger list 'list_of_lists'
for element in list_of_lists:
    if collections.Counter(element) == collections.Counter(list_) :
        return True

以上解决方案要求元素是可哈希的。

如果您发现collections太复杂而难以理解,则只需使用set(list_) == set(element)

以上方法要求元素是可哈希的。 如果元素不可散列而是可排序,则可以使用sorted(list_)==sorted(element)

答案 3 :(得分:0)

如果您喜欢这样做

if any(list == [2, 2, 6] for list in list_of_lists):
    #execute whatever code you want for this case

答案 4 :(得分:0)

如果您需要更通用的解决方案,请检查您的目标列表是否实际上是内部列表之一的有序子列表。诀窍是将列表转换成字符串表示形式,从而可以进行有效的子字符串检查。

>>> list_of_lists = [[2,2,2,3],[2,3,4],[2,2,6,8]]
>>> serialize = lambda x: ','.join(map(str,x))
>>> any(serialize([2,2,6]) in serialize(item) for item in list_of_lists)
True
>>> any(serialize([2,2,7]) in serialize(item) for item in list_of_lists)
False

答案 5 :(得分:0)

请从ipython中检查以下代码

dotnet aspnet-codegenerator controller -name MyNewController -m MyModel -dc MyDbContext -outDir Controllers/