<bdo id='dl35I'></bdo><ul id='dl35I'></ul>

<i id='dl35I'><tr id='dl35I'><dt id='dl35I'><q id='dl35I'><span id='dl35I'><b id='dl35I'><form id='dl35I'><ins id='dl35I'></ins><ul id='dl35I'></ul><sub id='dl35I'></sub></form><legend id='dl35I'></legend><bdo id='dl35I'><pre id='dl35I'><center id='dl35I'></center></pre></bdo></b><th id='dl35I'></th></span></q></dt></tr></i><div id='dl35I'><tfoot id='dl35I'></tfoot><dl id='dl35I'><fieldset id='dl35I'></fieldset></dl></div>

      1. <small id='dl35I'></small><noframes id='dl35I'>

        <legend id='dl35I'><style id='dl35I'><dir id='dl35I'><q id='dl35I'></q></dir></style></legend>

      2. <tfoot id='dl35I'></tfoot>
      3. Python Bool 和 int 比较以及使用布尔值对列表进行索引

        Python Bool and int comparison and indexing on list with boolean values(Python Bool 和 int 比较以及使用布尔值对列表进行索引)
        <i id='8hu51'><tr id='8hu51'><dt id='8hu51'><q id='8hu51'><span id='8hu51'><b id='8hu51'><form id='8hu51'><ins id='8hu51'></ins><ul id='8hu51'></ul><sub id='8hu51'></sub></form><legend id='8hu51'></legend><bdo id='8hu51'><pre id='8hu51'><center id='8hu51'></center></pre></bdo></b><th id='8hu51'></th></span></q></dt></tr></i><div id='8hu51'><tfoot id='8hu51'></tfoot><dl id='8hu51'><fieldset id='8hu51'></fieldset></dl></div>

                <bdo id='8hu51'></bdo><ul id='8hu51'></ul>
                  <tbody id='8hu51'></tbody>

                <small id='8hu51'></small><noframes id='8hu51'>

                <tfoot id='8hu51'></tfoot>

                • <legend id='8hu51'><style id='8hu51'><dir id='8hu51'><q id='8hu51'></q></dir></style></legend>
                • 本文介绍了Python Bool 和 int 比较以及使用布尔值对列表进行索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  使用布尔值对列表进行索引可以正常工作.虽然索引应该是一个整数.

                  Indexing on list with boolean values works fine. Though the index should be an integer.

                  以下是我在控制台中尝试过的:

                  Following is what I tried in console:

                  >>> l = [1,2,3,4,5,6]
                  >>> 
                  >>> l[False]
                  1
                  >>> l[True]
                  2
                  >>> l[False + True]
                  2
                  >>> l[False + 2*True]
                  3
                  >>> 
                  >>> l['0']
                  Traceback (most recent call last):
                  File "<stdin>", line 1, in <module>
                  TypeError: list indices must be integers, not str
                  >>> type(True)
                  <type 'bool'>
                  

                  当我尝试 l['0'] 时,它会打印出索引中预期的 int 类型的错误,这很明显.然后,即使 'True''False' 的类型是 Bool,列表上的索引也可以正常工作并自动将其转换为 int 类型并执行操作.

                  When I tried l['0'] it printed error that int type expected in indices and that is obvious. Then, even the type of 'True' and 'False' being Bool, indexing on the list works fine and automatically converts it to int type and performs the operation.

                  请解释内部发生的情况.我是第一次发问题,如有错误请见谅.

                  Please explain what is going on internally. I am posting question for the first time, so please forgive me for any mistake.

                  推荐答案

                  布尔值实际上是 整数.True 为 1,False 为 0.Bool 是 int 的子类型.

                  What's going on is that booleans actually are integers. True is 1 and False is 0. Bool is a subtype of int.

                  >>> isinstance(True, int)
                  True
                  >>> issubclass(bool, int)
                  True
                  

                  所以它没有将它们转换为整数,它只是将它们用作整数.

                  So it's not converting them to integers, it's just using them as integers.

                  (由于历史原因,Bools 是整数.在 Python 中存在 bool 类型之前,人们使用整数 0 表示 false,1 表示 true.因此,当他们添加 bool 类型时,他们将布尔值设为整数,以便保持与使用这些整数值的旧代码的向后兼容性.例如,参见 http://www.peterbe.com/plog/bool-is-int .)

                  (Bools are ints for historical reasons. Before a bool type existed in Python, people used the integer 0 to mean false and 1 to mean true. So when they added a bool type, they made the boolean values integers in order to maintain backward compatibility with old code that used these integer values. See for instance http://www.peterbe.com/plog/bool-is-int .)

                  >>> help(True)
                  Help on bool object:
                  
                  class bool(int)
                   |  bool(x) -> bool
                   |  
                   |  Returns True when the argument x is true, False otherwise.
                   |  The builtins True and False are the only two instances of the class bool.
                   |  The class bool is a subclass of the class int, and cannot be subclassed.
                  

                  这篇关于Python Bool 和 int 比较以及使用布尔值对列表进行索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Initialize Multiple Numpy Arrays (Multiple Assignment) - Like MATLAB deal()(初始化多个 Numpy 数组(多重赋值) - 像 MATLAB deal())
                  How to extend Python class init(如何扩展 Python 类初始化)
                  What#39;s the difference between dict() and {}?(dict() 和 {} 有什么区别?)
                  What is a wrapper_descriptor, and why is Foo.__init__() one in this case?(什么是 wrapper_descriptor,为什么 Foo.__init__() 在这种情况下是其中之一?)
                  Initialize list with same bool value(使用相同的布尔值初始化列表)
                  setattr with kwargs, pythonic or not?(setattr 与 kwargs,pythonic 与否?)

                  • <small id='3vZvB'></small><noframes id='3vZvB'>

                  • <tfoot id='3vZvB'></tfoot>
                      <tbody id='3vZvB'></tbody>
                        <bdo id='3vZvB'></bdo><ul id='3vZvB'></ul>
                        <i id='3vZvB'><tr id='3vZvB'><dt id='3vZvB'><q id='3vZvB'><span id='3vZvB'><b id='3vZvB'><form id='3vZvB'><ins id='3vZvB'></ins><ul id='3vZvB'></ul><sub id='3vZvB'></sub></form><legend id='3vZvB'></legend><bdo id='3vZvB'><pre id='3vZvB'><center id='3vZvB'></center></pre></bdo></b><th id='3vZvB'></th></span></q></dt></tr></i><div id='3vZvB'><tfoot id='3vZvB'></tfoot><dl id='3vZvB'><fieldset id='3vZvB'></fieldset></dl></div>
                      • <legend id='3vZvB'><style id='3vZvB'><dir id='3vZvB'><q id='3vZvB'></q></dir></style></legend>