将None分配给列表项时出错

时间:2015-09-23 22:30:26

标签: python list tuples mysql-python

我的程序中出现了一个奇怪的错误,我似乎无法在一个简化的例子中复制。我正在尝试将None的值分配给列表中的项目,但由于某种原因它会抛出错误。我不明白这个问题,因为我甚至没有使用元组。

#Execute SQL query returning five columns.
cursor.execute(query)

#Iterate the rows.
for row in cursor:
    #Get one row, and copy it to a new list variable.
    my_list         = row[:5]

    #If index 3 is zero, convert it to None.
    if (my_list[3] == 0):
        print type(my_list[3])
        ##Prints <type 'int'>

        my_list[3]  = None
        ##TypeError: 'tuple' object does not support item assignment

1 个答案:

答案 0 :(得分:0)

出于某种原因,MySQLdb将行作为元组而不是列表返回。尽管采用row[:5]语法,但仍会将其复制到my_list。

print type(my_list)
##Prints <type 'tuple'>

由于元组是不可变的,因此必须先将它们转换为列表,然后才能重新分配单个元素。

my_list = list(row[:5])