更改列表项的值

2024-09-29 01:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

你会发现,我对python还比较陌生,想知道如何更改列表项的值。我的代码如下,有注释。在更改列表项的值(即data[x][y]=something)之前,它运行良好。你知道吗

Tdata = cursor.fetchall() #Get data from MYSQL database
data = list(Tdata) #Convert into list...not sure if absolutely required
APIData = APIDataList()
MPLlat = 0.0
MPLLon = 0.0
RadiusOI = 15

for i in (range(0,len(data))):
    MPLCount = 0
    MPLlat = data[i][2]
    MPLLon = data[i][3]
    MPLCount = CountofbikesnearMPL(MPLlat, MPLLon, RadiusOI)
    if MPLCount>0:
        data[i][4] = MPLCount #ERROR: here is where the error is kicking in. 
                              #get error "tuple' object does not support 
                              #item assignment"

我真的不明白为什么会发生这种情况,并尝试谷歌,但没有成功。任何帮助都将不胜感激。你知道吗

提前谢谢。 塞洛


Tags: 代码in列表dataifisnoterror
2条回答

也许用enumerate写会更干净:

for i, elem in enumerate(data):
    # MPLCount = 0  - I suppose it is unnecessary since you overwrite the value below
    MPLlat = elem[2]
    MPLLon = elem[3]
    MPLCount = CountofbikesnearMPL(MPLlat, MPLLon, RadiusOI)
    if MPLCount > 0:
        data[i] = elem[:4] + (MPLCount,) + elem[5:]

命名变量和函数ThisWay有什么原因吗?如果不是的话,如果您遵循PEP8并将它们命名为this_way,那就太好了。无论如何要保持一致,不要把两种风格混在一起。你知道吗

cursor.fetchall()returns a list of tuples。你知道吗

这意味着data[i]将是tuple,根据定义,它是不可变的。如果您想修改data[i],您需要将元组转换成列表

data = [list(row) for row in Tdata]

或者通过元组连接替换整行

data[i] = data[i][:4] + (MPLCount,) + data[i][5:]

相关问题 更多 >