Python数组是只读的,可以';t附加值
我是Python新手。以下代码在尝试向数组追加值时导致错误。我做错了什么Python数组是只读的,可以';t附加值,python,arrays,Python,Arrays,我是Python新手。以下代码在尝试向数组追加值时导致错误。我做错了什么 import re from array import array freq_pattern = re.compile("Frequency of Incident[\(\)A-Za-z\s]*\.*\s*([\.0-9]*)") col_pattern = re.compile("([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)")
import re
from array import array
freq_pattern = re.compile("Frequency of Incident[\(\)A-Za-z\s]*\.*\s*([\.0-9]*)")
col_pattern = re.compile("([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)")
e_rcs = array('f')
f = open('example.4.out', 'r')
for line in f:
print line,
result = freq_pattern.search(line)
if result:
freq = float(result.group(1))
cols = col_pattern.search(line)
if cols:
e_rcs.append = float(cols.group(2))
f.close()
错误
回溯(最近一次呼叫最后一次):文件“D:\workspace\CATS” Parser\cats post.py”,第31行,在 e_rcs.append=float(cols.group(2))属性错误: “列表”对象属性“附加”为 只读属性(分配给.append)
是否要附加到数组中
e_rcs.append( float(cols.group(2)) )
执行此操作:
e_rcs.append=float(cols.group(2))
使用浮点值替换数组e-rcs
的append
方法。很少有你想做的事情。追加是一种方法。您正在尝试覆盖它,而不是调用它
e_rcs.append(float(cols.group(2)))
您正在为append()函数赋值,但希望调用.append(float(cols.group(2))。请尝试以下操作:
import re
freq_pattern = re.compile("Frequency of Incident[\(\)A-Za-z\s]*\.*\s*([\.0-9]*)")
col_pattern = re.compile("([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)")
e_rcs = [] # make an empty list
f = open('example.4.out', 'r')
for line in f:
print line,
result = freq_pattern.search(line)
if result:
freq = float(result.group(1))
cols = col_pattern.search(line)
if cols:
e_rcs.append( float(cols.group(2)) ) # add another float to the list
f.close()
在Python中,只有在需要控制存储的二进制布局时,才使用array.array,即RAM中的普通字节数组
如果你要做大量的科学数据分析,那么你应该看看支持n维数组的模块。可以将NumPy看作是FORTRAN在数学和数据分析方面的替代品。他并没有将列表称为数组。他使用的是一个数组,来自数组模块,它是Python标准库的一部分。传统上,我会在其他语言中使用数组。这就是我试图在Python中使用的内容,但收效甚微。我应该在Python中使用什么数据类型?@Jared Brown:numpy数组很好。有些人在使用内置的“列表”类型时会说“数组”。一开始我没能读到numpy数组部分。你可能想要一个普通的ol列表。它类似于其他语言中的普通数组。@Nick在本例中使用列表比使用数组('f')有什么好处?