Python 在类中通过列表进行循环初始化

Python 在类中通过列表进行循环初始化,python,list,Python,List,我试图循环浏览在我的类中声明的列表,但在运行代码时,我意识到该列表是不可编辑的,我不知道为什么欢迎任何解释 class Wordplay: def __init__(self): self.words_list = [] def words_with_length(self,length): for w in self.words_list: if len(w) == length: re

我试图循环浏览在我的类中声明的列表,但在运行代码时,我意识到该列表是不可编辑的,我不知道为什么欢迎任何解释

class Wordplay:
    def __init__(self):
        self.words_list = []


    def words_with_length(self,length):
        for w in self.words_list:
            if len(w) == length:
                return w

    def start_with(self,s):
        for w in self.words_list:
            if w[:1] == s:
               return w

a = Wordplay()

a.words_list=["Marcus","Aurelius","Henry","tirla","samantha","pocahontas","sorry"]

print(a.start_with("s"))

尝试打印以S开头的单词只会给我samantha,然后程序停止

您可以使用
函数与方法相结合。

因为您返回实现if条件的值,所以您可以将实现if条件的值添加到列表中并返回它

class Wordplay:
def __init__(self):
    self.words_list = []


def words_with_length(self,length):
    for w in self.words_list:
        if len(w) == length:
            return w

def start_with(self,s):
    wordsStartWith = []
    for w in self.words_list:
        if w[:1] == "s":
            wordsStartWith.append(w)
    return wordsStartWith
编辑:检查此处的图像,确保缩进正确


返回
return
语句通过返回第一个匹配的元素来停止
for
循环,该循环用于访问列表中的每个元素。您可以在
start\u with
函数本身中使用
print
函数,而不是返回匹配项,或者您可以将每个匹配元素附加到列表中,然后返回列表本身。你的选择

编辑:

由于您希望附加到列表并返回该列表,下面是代码:

def start_with(self,s):
    finalList = []
    for w in self.words_list:
        if(w[0] == s):
            finalList.append(w)
    return finalList

此函数的返回值将是一个列表,其中包含以s开头的所有单词,如果没有以s开头的单词,则返回值将为空。

在检查start_with函数中的首字母是否匹配时,为什么要进行切片?使用w[0]不是更清楚吗?谢谢你的提示。这里是初学者,所以每天学习都没问题。实际上,使用w[:1]还是w[0]并不重要,它只是有助于可读性。您是否运行了解决方案?。我只返回samanthayea它在一个列表中返回了两个值,可能是您这边的缩进有问题,请检查这里的图像:它工作!!我使用大写字母S而不是S谢谢你,你可以随时添加。lower()>>>设为w[0]。lower()==“S”要包含列表中的大写和小写字母附加到列表中仍然不起作用我尝试过,打印时只显示Samanthatcheck编辑,如果答案符合你的需要,请接受它作为默认答案。您是否运行了代码?输出是samantha,而不是预期的输出samantha&很抱歉,我确实按照下面的建议尝试了这个方法,输出是sameI运行我的代码时的结果,它返回了一个包含samantha和sorry的列表。它可以工作!!我用大写字母S代替了S谢谢你,你真的可以编写代码并作为示例运行吗