我的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