代码之家  ›  专栏  ›  技术社区  ›  Andriy Ivaneyko

为什么python列表的x[False]和x[True]是有效的?[副本]

  •  2
  • Andriy Ivaneyko  · 技术社区  · 8 年前

    如果我有 x 作为项目列表,为什么 x[True] x[False] 修改列表的第一个或第二个元素?

    x = [1, 2]
    x[True] = 'a'
    x[False] = 'b'
    print(x) # --> ['a', 'b']
    

    请解释一下为什么这个代码有效?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Andriy Ivaneyko    8 年前

    因为x是 list 传递的索引正在转换为整数表示形式。True和False的整数表示分别为1和0。结果,它导致修改列表中的第一个和第二个元素。从 Python Data model documentation :

    这些代表了真值假值和真值。两个物体 Boolean类型是integer类型的子类型,布尔值 例外情况是,当转换为字符串时 分别返回“False”或“True”。

    x = {}
    x[True] = 'a'
    print(x) # --> {True: 'a'}
    x[1] = 'b' 
    print(x) # --> {True: 'b'} and not {True: 'a', 1: 'b'}
    
    推荐文章