相关疑难解决方法(0)

Python中的False == 0和True == 1是一个实现细节还是由语言保证?

难道保证False == 0True == 1,在Python(假设他们没有被用户重新分配)?例如,无论Python的版本(现有的,可能的,未来的版本)是什么,它是否以任何方式保证以下代码将始终产生相同的结果?

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'
Run Code Online (Sandbox Code Playgroud)

任何对官方文档的引用都将非常感谢!

编辑:正如许多答案所述,bool继承自int.因此,问题可以改写为:"文档是否正式表明程序员可以依赖于从整数继承的布尔值,以及值01?".这个问题与编写由于实现细节而不会失败的健壮代码有关!

python boolean equality language-specifications

230
推荐指数
3
解决办法
23万
查看次数

为什么bool是int的子类?

当通过python-memcached在memcached中存储bool时,我注意到它以整数形式返回.检查库的代码向我显示有一个地方isinstance(val, int)被检查以将值标记为整数.

所以我在python shell中测试了它并注意到以下内容:

>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Run Code Online (Sandbox Code Playgroud)

但为什么究竟是bool一个子类int呢?

它有点意义,因为布尔值基本上是一个int,它可以只取两个值,但它需要比实际整数少得多的操作/空间(没有算术,只有一点存储空间)....

python boolean

79
推荐指数
2
解决办法
1万
查看次数

列表中的值大于某个数字的数量

我有一个数字列表,我想得到一个数字出现在符合特定条件的列表中的次数.我可以使用列表理解(或函数中的列表理解),但我想知道是否有人有更短的方式.

# list of numbers
j=[4,5,6,7,1,3,7,5]
#list comprehension of values of j > 5
x = [i for i in j if i>5]
#value of x
len(x)

#or function version
def length_of_list(list_of_numbers, number):
     x = [i for i in list_of_numbers if j > number]
     return len(x)
length_of_list(j, 5)
Run Code Online (Sandbox Code Playgroud)

有没有更浓缩的版本?

python list

57
推荐指数
3
解决办法
10万
查看次数

具有匹配属性的对象列表中的Python计数元素

我试图找到一种简单快速的方法来计算列表中符合条件的对象数量.例如

class Person:
    def __init__(self, Name, Age, Gender):
        self.Name = Name
        self.Age = Age
        self.Gender = Gender

# List of People
PeopleList = [Person("Joan", 15, "F"), 
              Person("Henry", 18, "M"), 
              Person("Marg", 21, "F")]
Run Code Online (Sandbox Code Playgroud)

现在,计算此列表中与基于其属性的参数匹配的对象数量的最简单函数是什么?例如,为Person.Gender =="F"或P​​erson.Age <20返回2.

python attributes list object count

36
推荐指数
4
解决办法
4万
查看次数

运营商的优先级:>和==

我试图猜测哪个运营商具有优先权:( >大于)或==(相等).这是我的实验:

>>> 5 > 4 == 1
False
Run Code Online (Sandbox Code Playgroud)

据我所知,这有两种可能的解决方案.

>>> (5 > 4) == 1
True
>>> 5 > (4 == 1)
True
Run Code Online (Sandbox Code Playgroud)

两者都没有返回False,那么Python的第一个代码是如何解决的?

python boolean operators operator-precedence

18
推荐指数
1
解决办法
583
查看次数

Python Bool和int比较以及带有布尔值的列表索引

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

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

>>> 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'>
Run Code Online (Sandbox Code Playgroud)

当我尝试l['0']打印错误时,指数中预期的int类型,这是显而易见的.然后,即使是类型'True''False'存在Bool,名单上的索引工作正常,并自动将其转换成int类型和执行操作.

请解释内部发生的事情.我是第一次发帖,所以请原谅我有任何错误.

python indexing boolean list

14
推荐指数
1
解决办法
2141
查看次数

在python 3中查找字符串中单词的出现次数

我正在尝试查找字符串中单词的出现次数.

word = "dog"
str1 = "the dogs barked"
Run Code Online (Sandbox Code Playgroud)

我使用以下内容来计算出现次数:

count = str1.count(word)
Run Code Online (Sandbox Code Playgroud)

问题是我想要完全匹配.所以这句话的计数是0.这可能吗?

python string count match

14
推荐指数
4
解决办法
4万
查看次数

将数字1添加到集合无效

我无法将整数添加1到现有集合中.在交互式shell中,这就是我正在做的事情:

>>> st = {'a', True, 'Vanilla'}
>>> st
{'a', True, 'Vanilla'}
>>> st.add(1)
>>> st
{'a', True, 'Vanilla'}   # Here's the problem; there's no 1, but anything else works
>>> st.add(2)
>>> st
{'a', True, 'Vanilla', 2}
Run Code Online (Sandbox Code Playgroud)

这个问题是两个月前发布的,但我认为它被误解了.我使用的是Python 3.2.3.

python set python-3.x

9
推荐指数
1
解决办法
275
查看次数

检查列表中有多少元素属于指定范围(Python)

我有一个元素列表(整数),我需要做的是快速检查此列表中有多少元素属于指定范围.示例如下.

范围从34到566

l = [9,20,413,425]

结果是2.

我当然可以使用一个简单的for循环来比较每个元素和最小值和最大值(34 <x <566)然后如果语句为真则使用计数器,但我认为可能有一个更简单的方法要做到这一点,可能还有一个漂亮的单线.

python list range

6
推荐指数
2
解决办法
2099
查看次数

如何计算列表中大于给定数字的元素的出现次数?

假设我有这个清单:

a = [1.1, 2, 3.1, 4, 5, 6, 7.2, 8.5, 9.1]
Run Code Online (Sandbox Code Playgroud)

我想知道有多少元素大于7.结果应该是3.在Python中有一种优雅的方法吗?我试过count但它不起作用.

python list count

6
推荐指数
1
解决办法
3761
查看次数