繁体   English   中英

无法阻止python在循环中遍历字符串

[英]Can't stop python from iterating through string in loop

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

使用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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM