我如何获得列表中对象的实际位置

时间:2021-06-21 01:28:19

标签: python list

如何获取对象在列表中的实际位置?

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))

2 个答案:

答案 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 检查其相等性是有效的,因为 Falseone 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)

好的,有两件事会有所帮助:

  1. enumerate 函数。这将返回一个计数器。更多相关信息:Enumerate Function

  2. 通过检查元素的类型,可以得到你想要的结果。 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 是单身。

相关问题