[英]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.