Python 3 如何检查一个值是否已经在列表中

标签 python list

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

现在我想添加一个条目,如果有子列表==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 是生成器表达式引发 StopIteration 异常时返回的默认值,或者您可以省略默认值并改用异常处理:

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

关于Python 3 如何检查一个值是否已经在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503821/

相关文章:

python - 如何在每次类调用时初始化全局变量?

python - 在python中将str类型点分十进制(ip地址)转换为十六进制

python - Python 中的 System V 共享内存?

python - 在 Python 3.4 中生成具有重复项的随机数的随机列表

python - 字典中元组第一项的平均值

python - 可以用 python 捕获 ffmpeg 错误吗?

python - 将 MySQL 查询结果保存到 CSV 文件

python - 如何将此模板列表与单词列表进行比较?

python - 为列表生成器结果分配不同的值

c++ - 为 std::vector 分配几 GB 内存