Python Array是只读的,不能追加值

时间:2009-10-30 18:08:29

标签: 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]+)")
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行,in          e_rcs.append = float(cols.group(2))AttributeError:   'list'对象属性'append'是   只读属性(分配给.append)

4 个答案:

答案 0 :(得分:6)

你想附加到数组吗?

e_rcs.append( float(cols.group(2)) )

执行此操作:e_rcs.append = float(cols.group(2))使用浮点值替换数组append的{​​{1}}方法。很少有你想做的事。

答案 1 :(得分:6)

您要分配给append()函数,而是要调用.append(float(cols.group(2)))。

答案 2 :(得分:3)

追加是一种方法。你试图覆盖它而不是调用它。

e_rcs.append(float(cols.group(2)))

答案 3 :(得分:0)

请改为尝试:

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模块。可以将NumPy视为FORTRAN在数学和数据分析方面的替代品。