Python 为什么所提供程序的输出会打印“文件”;1:1,2:1,3:2,-1:1“;而不是",;0:2,1:1,2:1,3:2,-1:1;?

Python 为什么所提供程序的输出会打印“文件”;1:1,2:1,3:2,-1:1“;而不是",;0:2,1:1,2:1,3:2,-1:1;?,python,class,if-statement,Python,Class,If Statement,下面是提供的代码。我自己测试了一些东西。我了解到,如果我在(L中的I)之后添加一个print(I),它将打印零,但是如果我在(I:)之后添加print(I),那么它不会打印零。我已经在网上和我的课本上搜索过了,但我自己无法解释这一点。“如果我:”和“如果我:”到底是做什么的?任何帮助都会很好,谢谢 class TestClass(object): def __init__(self,L=None): self.D = {} if L:

下面是提供的代码。我自己测试了一些东西。我了解到,如果我在(L中的I)之后添加一个print(I),它将打印零,但是如果我在(I:)之后添加print(I),那么它不会打印零。我已经在网上和我的课本上搜索过了,但我自己无法解释这一点。“如果我:”和“如果我:”到底是做什么的?任何帮助都会很好,谢谢

class TestClass(object):
      def __init__(self,L=None):
          self.D = {}
          if L:
              for i in L:
                  if i:
                      if i in self.D:
                          self.D[i] += 1
                      else:
                          self.D[i] = 1
      def __add__(self,param):
          if type(param) == TestClass:
              for k, v in param.D.items():
                  if k in self.D:
                      self.D[k] += v
                  else:
                      self.D[k] = v
              return TestClass(self.D)
          else:
              return self + TestClass(param)

      def __str__(self):
          out_str = ''
          for k, v in self.D.items():
              out_str += '{}:{}, '.format(k, v)
          out_str = out_str.strip(", ")
          return out_str

inst1 = TestClass([-1,0,0,1,2,3,3])
print(inst1)                               

我是零,将被视为假,删除这一行,你会很好

if i:

0
在python中被视为
False
,因此
如果i:
为非零,则只有
i
True
。此外,一个空列表
[]
None
都被视为
False
,因此
如果L:
只有在列表
L
不为空且不为
None
的情况下才会为
True
谢谢大家。这帮了大忙!!!我假设这与集合、元组、字典等是一样的?如果变量=0也是一样的?嘿,查理。如果有一个可接受的答案,你应该接受它,这样问题就可以结束了。。