Python 3如何检查值是否已列在列表中的列表中

ine*_*tom 4 python list

我的Python 3中有一个列表列表:

mylist = [[a,x,x][b,x,x][c,x,x]]
Run Code Online (Sandbox Code Playgroud)

(x只是一些数据)

我有我的代码:

for sublist in mylist:
    if sublist[0] == a:
        sublist[1] = sublist[1]+1
        break
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个条目,如果有任何sublistentry == a

我怎样才能做到这一点?

Mar*_*ers 7

使用any()测试子表:

if any(a in subl for subl in mylist):
Run Code Online (Sandbox Code Playgroud)

这会测试每个subl但如果找到匹配则提前退出生成器表达式循环.

这并没有,然而,返回匹配特定的子表.您可以使用next()生成器表达式来查找第一个匹配项:

matched = next((subl for subl in mylist if a in subl), None)
if matched is not None:
    matched[1] += 1
Run Code Online (Sandbox Code Playgroud)

这里None是一个默认返回如果发电机表达提出了一个StopIteration例外,也可以忽略默认和使用异常处理来代替:

try:
    matched = next(subl for subl in mylist if a in subl)
    matched[1] += 1
except StopIteration:
    pass # no match found
Run Code Online (Sandbox Code Playgroud)