[英]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.