在Python中将项附加到列表中覆盖所有现有元素

2024-06-08 08:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本来读取.osu文件并将其转换为特定对象。对于每个“hitobject”必须执行多次

阅读部分工作正常,但是附加对象是个问题

追加对象时,它似乎覆盖了列表中的所有现有元素。我一辈子都搞不懂为什么会这样

我试过创建一个“temp”列表,它将对象存储在本地列表中,而不是“self.notes”列表中,问题仍然是一样的

我相信错误发生在文件的这部分:

if hitobjline != -1:
            hitobjects = self.file_lines[hitobjline+1:]
            for i in hitobjects:
                ln = i[:i.find(':')].split(',')
                new_note = [NoteType.Circle, NoteType.Hold][int(ln[3] == '128')]
                add_note = File.Note
                add_note.NoteTypeByte = ln[3]

                add_note.Note_Number = int(ln[0])
                add_note.Time = int(ln[2])
                add_note.NoteType = new_note
                add_note.Raw = ln
                self.notes.append(add_note)
                print(ln, ln[3], ln[3] == '128', new_note, add_note.NoteType)

对于后台,.osu文件的语法如下:x,y,time,type,hit,end:stuff-i-dont-need-to-worry-about 你知道吗

我希望输出self.notes[0].NoteTypeosureader.NoteType.Hold,因为文件的第一行是192,192,410,128,0,2974:0:0:0:0:(128表示'Hold'

但是,我得到了文件的最后一行,osurear.NoteType.Circle


Tags: 文件对象selfadd列表newosuint