【问题标题】:In python using string arrays inside class [duplicate]在python中使用类内的字符串数组[重复]
【发布时间】:2020-11-22 19:11:20
【问题描述】:

您好,我是 Python 新手,在课堂上使用数组时遇到问题。使用字符串数组时,当我用字符串更新其中一个数组时 - 所有其他数组条目都获得相同的值。您的友好指导将不胜感激。我在工作代码下方显示 - 不使用数组,然后使用数组相同(这是不工作的)。

#Working Code:

class sessionData:
    num_threads = 0
    session_id = []
    audio_check_audio_1 = []
    audio_check_audio_2 = []
    audio_check_audio_3 = []


    def __init__(self, id, f1, f2):
        self.id = id


#in main function later on:

      if (session_id not in sessionData.session_id):
            sessionData.audio_check_audio_1.append(wav_file_name1)
            sessionData.audio_check_audio_2.append(wav_file_name1)
            sessionData.audio_check_audio_3.append(wav_file_name1)
            sessionData.session_id.append(session_id)

       else:

            i = sessionData.session_id.index(session_id)

            if (recording_number == '1'):
                sessionData.audio_check_audio_1[i] = wav_file_name1
            elif (recording_number == '2'):
                sessionData.audio_check_audio_2[i] = wav_file_name2
            else:
                sessionData.audio_check_audio_3[i] = wav_file_name3

#Not working code:

class sessionData:
    num_threads = 0
    session_id = []
    audio_check_audio = [[]*3]


    def __init__(self, id, f1, f2):
        self.id = id


#in main function later on:

    if (session_id not in sessionData.session_id):

        sessionData.session_id.append(session_id)
        sessionData.audio_check_audio.append([wav_file_name[0],'',''])

    else:

         i = sessionData.session_id.index(session_id)

         for x in range 3:

             sessionData.audio_check_audio[i][x] = reg_wav_file[x]

【问题讨论】:

    标签: python arrays class


    【解决方案1】:

    当您像这样使用乘法创建列表时:

    audio_check_audio = [[]*3]
    

    这三个子列表实际上是对同一个列表对象的三个相同的引用,更新其中一个会更新所有的。

    要解决这个问题,不要使用乘法:

    audio_check_audio = [[],[],[]]
    

    更多详情请见this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-21
      • 2018-05-04
      • 2018-05-15
      • 2015-10-07
      • 2011-05-07
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多