我有一个包含信息和7个数据集的列表,我将独立处理
此列表包含以下内容
print header
[['Specimen_RawData_1.csv' '' '' '' '']
['Time' 'Extension' 'Load' 'Strain' 'True Strain']
['(s)' '(mm)' '(N)' '(%)' '(%)']]
现在我想创建一个包含7个条目的列表,并用它编辑一些值。特别地,将空字符串替换为与数据集对应的“Cycle:”+数字
以下是我如何努力做到这一点
我有我正试图复制和编辑的列表
header
我将它复制到一个临时变量
tempHeader
然后我对列表标题的内容进行一些更改
然后我将临时变量附加到
newHeader
newHeader = []
for i in range(len(dirChange_index)/2):
tempHeader =[]
tempHeader = header
# Want to replace a locaton in the list with the value Cycle i
tempHeader[0][1] = 'Cycle: ' + str(i+1)
print tempHeader
print '--'
newHeader.append([tempHeader])
print newHeader
这表明我正在成功更改临时列表中的值
[['Specimen_RawData_1.csv' 'Cycle: 1' '' '' '']
['Time' 'Extension' 'Load' 'Strain' 'True Strain']
['(s)' '(mm)' '(N)' '(%)' '(%)']]
[['Specimen_RawData_1.csv' 'Cycle: 2' '' '' '']
['Time' 'Extension' 'Load' 'Strain' 'True Strain']
['(s)' '(mm)' '(N)' '(%)' '(%)']]
。 . .
[['Specimen_RawData_1.csv' 'Cycle: 7' '' '' '']
['Time' 'Extension' 'Load' 'Strain' 'True Strain']
['(s)' '(mm)' '(N)' '(%)' '(%)']]
我不理解的行为是,当我将临时变量附加到不断增长的列表中时,它也会替换以前的所有值
print newHeader
[[array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')], [array([['Specimen_RawData_1.csv', 'Cycle: 7', '', '', ''],
['Time', 'Extension', 'Load', 'Strain', 'True Strain'],
['(s)', '(mm)', '(N)', '(%)', '(%)']],
dtype='|S26')]]
我错过了什么。似乎我误解了列表和数组中的一些基本内容。我想我可以用numpy轻松地做到这一点,但我想了解这里发生了什么
您正在创建引用而不是副本,因此您正在更改同一对象:
您需要对列表列表进行
deepcopy
检查对象标识时,可以看到它们都指向内存中的同一位置:
现在实际制作一个副本:
相关问题 更多 >
编程相关推荐