python - 在python中使用类内的字符串数组
问题描述
嗨,我是 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]
解决方案
当您使用这样的乘法创建列表时:
audio_check_audio = [[]*3]
这三个子列表实际上是对同一个列表对象的三个相同引用,更新其中一个将更新所有子列表。
为了解决这个问题,不要使用乘法:
audio_check_audio = [[],[],[]]
有关更多详细信息,请参阅此问题。
推荐阅读
- flutter - 未定义命名参数“fileExtension”
- python - 我想从python中的给定信息中生成随机字符串
- reactjs - 将 Wordpress 博客集成到现有的 React 网站
- c# - 我创建了一个类,女巫是同一命名空间中另一个类的子类。但 Visual Studio 无法识别父类中的受保护字段
- python - 将 word2vec 模型文件转换为文本
- certificate - 使用通配符证书设置 ADFS SSL 证书时出错
- typescript - 如何在 React-Native 中使用 Firebase 对用户进行离线身份验证?
- python - 将 HTML 实体写入文件
- discord.js - 如何删除 discord.js 中的 webhook?
- excel - 为表单提交中的每条记录创建唯一 ID