我的python 3中有一个列表:

mylist = [[a,x,x][b,x,x][c,x,x]]

(X只是一些数据)
我的代码是这样的:
for sublist in mylist:
    if sublist[0] == a:
        sublist[1] = sublist[1]+1
        break

现在我想添加一个条目,如果有任何sublistentry==a
我该怎么做?

最佳答案

使用any()测试子列表:

if any(a in subl for subl in mylist):

这将对每个subl进行测试,但如果找到匹配,则尽早退出生成器表达式循环。
但是,这不会返回匹配的特定子列表。可以对生成器表达式使用next()来查找第一个匹配项:
matched = next((subl for subl in mylist if a in subl), None)
if matched is not None:
    matched[1] += 1

如果生成器表达式引发了None异常,则是默认返回的,或者您可以省略默认值,并使用异常处理来代替:
try:
    matched = next(subl for subl in mylist if a in subl)
    matched[1] += 1
except StopIteration:
    pass # no match found

08-17 09:15