python检查lis中是否存在值

2024-09-29 23:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

无法正确理解。我想检查列表中的一组值。我不应该因为值不存在而陷入条件if。在

以下列表包含: ['pm_pmdo','pm_pmco','shv','dsv','pmv']

检查以下各项:she、dse、pme

里面找到一个?在

class newfunc(object):

    def testfunction(self):

        self.DSE = 'dse'
        self.PME = 'pme'
        self.SHE = 'she'

        self.users_roles = ['pm_pmdo', 'pm_pmco', 'shv', 'dsv', 'pmv']

        print 'Following list contains:'
        print self.users_roles
        print 'Checking for the following:'
        print self.SHE
        print self.DSE
        print self.PME

        if (self.DSE or self.PME or self.SHE for s in self.users_roles):
        #if (self.DSE or self.PME or self.SHE) in self.users_roles:
            print "inside found one"
        else:
            print "outside none found"

if __name__ == '__main__':
    runtime = newfunc()
    runtime.testfunction()

Tags: orself列表ifusersrolesprintshe
3条回答

如果顺序无关紧要,^{}是快速成员资格测试的好容器:

class NewFunc(object):
    def testfunction(self):
        self.DSE = 'dse'
        self.PME = 'pme'
        self.SHE = 'she'

        self.users_roles = {'pm_pmdo', 'pm_pmco', 'shv', 'dsv', 'pmv'}

        print 'users_roles:'
        print list(self.users_roles)
        print 'Checking for the following:'
        print self.SHE
        print self.DSE
        print self.PME

        if {self.DSE, self.PME, self.SHE} & self.users_roles:
            print "found at least one"
        else:
            print "none found"

if __name__ == '__main__':
    runtime = NewFunc()
    runtime.testfunction()

使用any,如果我们找到匹配项,则会短路返回True,否则计算结果为False:

if any(s in self.users_roles for s in (self.DSE , self.PME , self.SHE ))

代码的计算结果始终是True,因为if self.DSE基本上是在检查if bool(self.DSE),对于任何非空字符串,self.PMEself.SHE的值都是一样的。在

^{pr2}$

您还可以将self.users_roles设为一个集合并使用set.intersection

self.users_roles = {'pm_pmdo', 'pm_pmco', 'shv', 'dsv', 'pmv'}

if self.users_roles.intersection([self.DSE, self.PME, self.SHE])
if any(role in self.users_roles for role in (self.SHE, self.PME, self.SHE)):

相关问题 更多 >

    热门问题