【问题标题】:Print a list of attributes打印属性列表
【发布时间】:2018-12-09 06:20:20
【问题描述】:

这里是全新的编码器。所以这是我的测试代码:

class Dog:
   def __init__ (self, name, age):
    self.name = name
    self.age = age

dog1 = Dog('Peter', 15)
dog2 = Dog('Grayson', 15)

dogs = [dog1, dog2]

我想打印一份所有 15 岁的狗的名单。这样做的正确方法是什么?

【问题讨论】:

  • 使用 for 循环遍历 dogs,并访问变量的 age 属性。你想从for dog in dogs:开始。试一试;)
  • 所以你有很多人想要打印他们年龄为 15 岁的列表?

标签: python python-3.x list object printing


【解决方案1】:

你可以试试这个:

print(*(dog.name for dog in dogs if dog.age == 15), sep='\n')

这将在不同的行上打印 15 岁的狗的名字:

Peter
Grayson

将其保留为列表:

print([dog.name for dog in dogs if dog.age == 15])
# ['Peter', 'Grayson']

【讨论】:

    【解决方案2】:

    首先,如果您想在打印 dog 变量 (d) 时打印名称,您需要将其放入 Dog 类中:

    def __repr__(self):
        return self.name
    

    然后使用:

    print ([d for d in dogs if d.age == 15])
    

    上面的说法同:

    for d in dogs:  # iterates through the dogs list
        if d.age == 15:
            print(d)
    

    【讨论】:

      【解决方案3】:

      对于您的示例,您可以这样做:

      for dog in dogs:  
          if dog.age == 15:
              #just print name of dog
              print(dog.name)
              #print the dog object
              print(dog)
      

      玩得开心:)

      【讨论】:

        【解决方案4】:
         d = [i.name if i.age == 15 else -1 for i in dogs]
        

        'd' 是 15 岁的狗名列表。

        【讨论】:

          【解决方案5】:

          我建议这种方法:

          dogs=[]
          dogs.append( Dog('Peter', 15) )
          dogs.append( Dog('Grayson', 15) )
          dogs.append( Dog('Boston', 1) )
          
          dogs_aged_15 = [dog for dog in dogs if dog.age == 15]
          
          for dog in dogs_aged_15:
            print(dog.name)
          
          # Peter
          # Grayson
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-03
            • 2023-01-11
            • 1970-01-01
            • 2019-04-02
            • 1970-01-01
            • 2020-09-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多