如何获取对象在列表中的实际位置?
my_list = [0, 0, 2, 4, 5, 2, 0, False, 0]
for i in my_list:
if i == False:
print('my list:', my_list, 'object:', i, 'At Position', my_list.index(i))
答案 0 :(得分:1)
在您的情况下,检查相等性是不够的。在 Python 中,运行 0 == False
返回 True
。由于您的列表包含不同类型对象的元素,并且 0
位于您的列表的开头,这一点更加严重。因此,如果您想在这里找到 False
,您还应该检查元素类型:
my_list = [0, 0, 2, 4, 5, 2, 0, False, 0]
for idx,i in enumerate(my_list):
if type(i) is bool and i == False:
print('my list:', my_list, 'object:', i, 'At Position', idx)
输出:
my list: [0, 0, 2, 4, 5, 2, 0, False, 0] object: False At Position 7
正如下面提到的 o11c,False
提供了一个特殊的场景,在这里使用 is
检查其相等性是有效的,因为 False
是 one of few built-in singletons in Python。因此 if i is False
将适用于条件语句:
if i is False:
print('my list:', my_list, 'object:', i, 'At Position', idx)
答案 1 :(得分:0)
好的,有两件事会有所帮助:
enumerate
函数。这将返回一个计数器。更多相关信息:Enumerate Function
通过检查元素的类型,可以得到你想要的结果。 False
值实际上由 0
表示。因此,所有 0
都被打印出来。此外,0
的首次出现位于索引 0
。所以,它每次都在打印。 type()
将获取元素的数据类型。由于 type(i) is bool
表示是否为 True/False
。这会给你结果。
for i,j in enumerate(my_list):
if j == False and type(j) is bool:
print('my list:', my_list, 'object:', j, 'At Position', i)
您也可以使用 if j is False:
作为 boolean
是单身。