4

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

我怎样才能做到这一点?

4

2 回答 2

7

用于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如果生成器表达式引发异常,则在哪里返回默认值StopIteration,或者您可以省略默认值并改用异常处理:

try:
    matched = next(subl for subl in mylist if a in subl)
    matched[1] += 1
except StopIteration:
    pass # no match found
于 2013-10-21T20:14:20.480 回答
2

您可以使用any()列表推导(这里是生成器推导):

inList = any(a in sublist for sublist in mylist)
于 2013-10-21T20:14:51.257 回答