如何在python列表中标识元组中的值?

如何在python列表中标识元组中的值?,python,python-2.7,list,indexing,tuples,Python,Python 2.7,List,Indexing,Tuples,我正在寻找一些pythonic解决方案来检查列表中的元组中是否有True或False 我喜欢这样: varList = [(True,)] temp = varList.pop(0) result = temp[temp.index(True,)] print result ############# # If there are more complex result varList = [(True, False, False), (True, False)] 如何以更好的方式

我正在寻找一些pythonic解决方案来检查列表中的元组中是否有True或False

我喜欢这样:

varList = [(True,)]
temp = varList.pop(0)
result = temp[temp.index(True,)]
print result

#############
# If there are more complex result 
varList = [(True, False, False), (True, False)]    
如何以更好的方式做到这一点

试试看

result = True in varList[0]

如果您想检查值True是否存在于一个或多个元组中,则可以使用如下关键字:

true_exists = [ any(subset) for subset in varList ]

您还可以使用关键字检查所有元素是否为真。如果您还想返回元组的索引以及元组中出现的索引,您可以尝试:

  def isValueInList(varList, value):
       return [(varList[lst][i],lst,i) for lst in range(len(varList)) for i in range(len(varList[lst])) if varList[lst][i] == value]

 print(isValueInList(varList, True))
结果将是:

[(True, 0, 0), (True, 1, 0)]
[(True, 0, 0), (True, 1, 0)]
其中:

第一个参数表示找到了该值

第二个参数指定列表中元组的索引

第三个参数指定在该元组中找到的值的索引

以下是建议使用
枚举
进行的编辑:

def isValueInList(varList, value):

   return [(val,innerInd, tupInd) for tupInd, tup in enumerate(varList) for innerInd, val in enumerate(tup) if val==value]

print(isValueInList(varList, True))
结果将是:

[(True, 0, 0), (True, 1, 0)]
[(True, 0, 0), (True, 1, 0)]

varList
是否始终包含单个元素?您想像Python那样对待
1
0
吗?请给出varlist的示例。它只包含true还是false?如果是,它将始终作为第一个元素吗?@Chris_Rands问题是有时可能存在多个逻辑测试结果。我试着用一些pythonic的方法来检查True的存在性(因为它是焦点)。@IsaqueDaniel你能展示一些更复杂的
varList
示例和你想要的输出吗?你不能告诉我们这个示例是什么?为什么这么难呢?布尔值的一种更为简洁的方法是使用
any
all
函数。但是请注意,当列表为空时,它们可能会产生不同于
中的
True和
中的
False方法的结果。不过,我会尝试编辑它,因为正如@StefanPochmann所建议的,使用
枚举
有一种更方便的方法。