繁体   English   中英

Python - 更改列表项的值

[英]Python - change value of list item

正如你将能够接受的那样,我对 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"

我真的无法弄清楚为什么会发生这种情况,并尝试使用谷歌搜索但没有成功。 任何帮助将不胜感激。

提前致谢。 塞洛

cursor.fetchall() 返回一个元组列表

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

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

或通过元组连接替换整行

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

也许使用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会很好。 无论如何要保持一致,不要将两种风格混合在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM