我正在尝试遍历类中的列表,而只是将列表的第一个成员打印到控制台。如何打印每个元素?
class CodeManager(object):
"""Separates the input string into individual characters in a list"""
characters = []
def __init__(self, stringCode):
self.stringCode = stringCode
def LoopThroughList(self):
self.characters = list(self.stringCode.upper())
for chars in self.characters:
return chars
然后我在我的主Python文件中创建一个类对象:
code = CodeManager.CodeManager("Hello my name is Callum")
print (code.LoopThroughList())
答案 0 :(得分:2)
您在第一次迭代后返回:
for chars in self.characters:
return chars # ends loop
如果要查看所有字符,请使用print或yield并迭代code.LoopThroughList()
for chars in self.characters:
print(chars)
或yield
并将方法设为generator:
for chars in self.characters:
yield chars
然后:
for ch in code.LoopThroughList():
print(ch)
使用yield实际上允许您使用返回的每个字符,这可能更接近您在自己的代码中尝试的操作。
如果您只想查看新行上输出的每个字符,可以使用str.join:
self.characters = list(self.stringCode.upper())
return "\n".join(self.characters)
您也不需要在self.stringCode.upper()
上调用列表,您可以直接在字符串上进行迭代。
答案 1 :(得分:1)
你的循环是return
第一个字符。 return
语句将阻止循环的剩余迭代的执行。
您可能希望使用print
代替return
:
def loop_through_list(self):
self.characters = list(self.stringCode.upper())
for char in self.characters:
print(char)
用作:
code = CodeManager.CodeManager("Hello my name is Callum")
code.loop_through_list()
此外,您在characters = []
中对class
的定义非常无用。您正在阴影方法调用中的class属性。
答案 2 :(得分:0)
你正在返回,因此列表中的第一个元素。
class CodeManager(object):
"""Separates the input string into individual characters in a list"""
characters = []
def __init__(self, stringCode):
self.stringCode = stringCode
def LoopThroughList(self):
self.characters = list(self.stringCode.upper())
for chars in self.characters:
print chars
code = CodeManager("Hello my name is Callum")
code.LoopThroughList()
答案 3 :(得分:0)
您可以使用list comprehension
def LoopThroughList(self):
return [chars for chars in self.stringCode.upper()]
这将返回stringCode
变量
答案 4 :(得分:-1)
呀。列表理解只需稍加修改即可使用:
class CodeManager(object):
"""Separates the input string into individual characters in a list"""
characters = []
def __init__(self, stringCode):
self.stringCode = stringCode
self.characters = stringCode.upper()
def LoopThroughList(self):
return [chars for chars in self.stringCode.upper().split()]
code = CodeManager("Hello my name is Callum")
print (code.LoopThroughList())
[&#39; HELLO&#39;&#39; MY&#39;&#39; NAME&#39;&#39; IS&#39;&#39; CALUM&#39;] < / p>
或者如果你想要这个:
class CodeManager(object):
characters = []
def __init__(self, stringCode):
self.stringCode = stringCode
self.characters = stringCode.upper()
def LoopThroughList(self):
return [chars for chars in self.stringCode.upper()]
code = CodeManager("Hello my name is Callum")
print (code.LoopThroughList())
[&#39; H&#39;,&#39; E&#39;,&#39; L&#39;,&#39; L&#39;,&#39; O&#39;,& #39; &#39;,&#39; M&#39;,&#39; Y&#39;,&#39; &#39;,&#39; N&#39;,&#39; A&#39;,&#39; M&#39;,&#39; E&#39;,&#39; &#39;,&#39;我&#39;,&#39; S&#39;,&#39; &#39;,&#39; C&#39;,&#39; A&#39;,&#39; L&#39;,&#39; L&#39;,&#39; U&#39;, &#39; M&#39;]
你的characters变量是一个类变量,而不是一个实例变量(存在差异)。