【问题标题】:Can't stop python from iterating through string in loop无法阻止python在循环中遍历字符串
【发布时间】:2021-12-14 23:18:15
【问题描述】:
class Hat:
    def __init__(self, **kwargs):
        self.contents = []
        for balltype in kwargs.keys():
            for ballnum in range(kwargs[balltype]):
                self.contents += balltype

hattrial = Hat(red = 1, blue = 2)
print(hattrial.contents)
        

我正在尝试创建一个包含输入参数字典中的键的列表,而不是简单地添加我得到的字符串条目:

['r', 'e', 'd', 'b', 'l', 'u', 'e', 'b', 'l', 'u', 'e']

代替:

['red', 'blue', 'blue']

红色出现一次,蓝色出现两次。我已经尝试了一些不同的解决方案,而不是之后仅操作数组,例如下面的尝试,但我所做的一切都没有改变输出。肯定有一个优雅的解决方案,不需要我将角色重新组合在一起吗?

end = len(balltype)
self.contents += balltype[0:end]
self.contents += balltype

【问题讨论】:

    标签: python arrays string loops for-loop


    【解决方案1】:

    使用append

    class Hat:
        def __init__(self, **kwargs):
            self.contents = []
            for balltype in kwargs.keys():
                for ballnum in range(kwargs[balltype]):
                    self.contents.append(balltype)
    
    hattrial = Hat(red = 1, blue = 2)
    print(hattrial.contents)
    

    注意列表中的+= 运算符

    这也有效,尝试理解为什么它在此处正确附加+=

    class Hat:
        def __init__(self, **kwargs):
            self.contents = []
            for balltype in kwargs.keys():
                self.contents += kwargs[balltype] * [balltype]
    
    hattrial = Hat(red = 1, blue = 2)
    print(hattrial.contents)
    

    基本上,您的代码问题可以归结为以下几点:

    a = []
    a += "hello"
    a
    ['h', 'e', 'l', 'l', 'o']
    

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2016-01-24
      • 2017-07-15
      • 2021-11-27
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多