TypeError:'int'对象在Python中不可迭代

问题描述:

def export_csv_standard_units(name): 
    cursor.execute("select distinct(standard_units) from activities where standard_type='IC50' ") 
    result_standard_units_distinct = cursor.fetchall() 

    cursor.execute("select standard_units from activities where standard_type='IC50' ") 
    result_standard_units = cursor.fetchall() 

    field_standard_units =() 
    cnt = [] 

    for result in result_standard_units_distinct: 
     field_standard_units = field_standard_units + (result_standard_units_distinct,) 

    length = int(len(field_standard_units)) 

    for i in result_standard_units: 
     for j in length: 
      if field_standard_units(j) == result_standard_units(9): 
       cnt[j] = cnt[j] + 1 
    field = (field_standard_units, cnt) 

    export_field = open('%s_standard_units.csv' %name, 'wb') 
    export_csv_field = csv.writer(export_field) 
    export_csv_field.writerows([field]) 

    export_field.close() 

我有一些问题需要运行我的python文件。 我想使csv.file数据统计 这样的..TypeError:'int'对象在Python中不可迭代

standard_units算 standard_unit1 123 standard_unit2 234

,但是,它的主要错误是这样的。

File "manage.py", line 42 
    for j in length: 
    TypeError: 'int' object is not iterable 

这是什么意思iterable?

+0

像数组? – Daenarys 2015-02-11 08:58:28

像你的错误消息说:int s是不可迭代的。使用range

for j in range(length): 
    ... 

如果length是10,range(length)会给你值0..9。

你不必去实际计算提前长度 - 而不是你可以enumeratefield_standard_units

for j, unit in enumerate(field_standard_units): 
    if unit == result_standard_units(9): # What's 9? 
     ... 

注: 使用xrange如果你的范围是非常大的,因为range创建一个列表,从而它的所有成员都占用了内存,而xrange创建了一个像enumerate一样的生成器。