class MySong:
_songTitle = "Song Title"
_artistName = "Artist Name"
_likeIndicator = -1
def setTitleAndArtist(self, songTitle, artistName):
self._songTitle = songTitle
self._artistName = artistName
def setLike(self, likeIndicator):
self._likeIndicator = likeIndicator
def undoSetLike(self, songTitle):
Null
def getTitle(self):
return self._songTitle
def getArtist(self):
return self._artistName
def getLikeIndicator(self):
return self._likeIndicator
class MyPlaylist:
_mySongs = []
def add(self, song):
self._mySongs.append(song)
def showTitles(self):
index = 0
titlesList = []
while index != len(self._mySongs):
titlesList.append(self._mySongs[index].getTitle())
index = index + 1
return titlesList
def remove(self):
remindex = 0
while remindex != len(self._mySongs):
if (self._mySongs[index].getTitle()) == remChoice :
return("Song FOUND debug!")
self._mySongs.remove(index)
else:
remindex = remindex + 1
return("Song NOT FOUND debug!")
def getMySong(self):
Null
在_mySongs = []
中有一个歌曲对象列表。我正试图删除一个,基于那个对象的title变量。你知道吗
在程序的一个单独的(unshown)部分,要求用户输入他们想要删除的歌曲的标题作为字符串。这将另存为remChoice
。你知道吗
我不完全确定如何删除基于标题的歌曲。 我已经尝试了一段时间,很明显,我们在列表中找到了歌曲的索引,方法是将其与标题匹配(通过调用getTitle方法),然后在找到索引时删除该索引。你知道吗
这不管用。我哪里出错了?你知道吗
试试看
self._mySongs.remove(title)
这应该管用。 (或从另一个对象:用对象名替换self)如果要从list中删除某个项,请使用:
其中
i
是索引。(例如:基于搜索的歌曲索引)。你知道吗list.remove()
用于从列表中删除匹配的元素,而不是“ith”项。你知道吗您可能还会发现
list
在这里不是合适的数据结构?也许您可以尝试将键/值对存储在dict
中。e、 克:您可以稍后通过其键删除歌曲:
标题是你的钥匙。这样可以避免进行O(n)搜索。你知道吗
更新:
您的
.remove()
方法应该更像以下内容:这里我们使用的是
list
的迭代协议,使用的是for x in xs:
,而不是使用while循环和手动记账。内置函数enumerate()
也用来给我们一个索引到我们正在迭代的列表中(即:它在序列中的位置)。你知道吗相关问题 更多 >
编程相关推荐