我是一个编程新手,我正在用python和sqlite3工作,我有一个列,其中的数字是有序的,但可能有间隙(1,2,4,7,8...)。我想做的是做一个For循环,在这个循环中,我按顺序(ID)比较数字,并消除差距(1,2,3,4,5...)。
函数为
def deleteGaps(idTuple):
idList = list(idTuple) #converting the fetched Tuple to a List to be able to modify it
previousId=-1 # -1 because the first element is [0]
for id in idList:
if id > previousId+1:
id = previousId+1
print(id) #Just for testing, later I'll work on the side of updating the table
previousId = id
它给了我以下的错误
if id > previousId+1:
^^^^^^^^^^^^^^^^
TypeError: '>' not supported between instances of 'tuple' and 'int'
如果我去print(idList),它会给我“[(1,),(2,),(4,),(7,),(8,)]”而不是预期的“(1,2,4,7,8)"。这可能是问题的根源,但我不知道如何正确转换。
有什么建议吗?谢谢你们
PS:我意识到我可以得到元组的长度并分配1,2,3.到n=lenght,但我想知道如何从[(1,),(2,)]到(1,2)。
3条答案
按热度按时间x759pob21#
你的代码<$d是元组,但你正在与int进行比较。
id = int(id) if id > previousId+1: id = previousId+1
你能试试这个吗
vnjpjtjt2#
PS部分的部分答案:
得到
(1, 2, 3)
。szqfcxe23#
我不明白你想做什么,但我可以修复你的bug:
这是因为
id
的类型是tuple
,你不能在tuple
和int
之间应用add操作+
你需要访问元组中的值,所以尝试:注意:
id
的类型为tuple
* 以简化它 *,因为sqlite3查询的结果是tuple
如果你不想使用
[0]
,并感觉这个tuple
总是看起来像(value,)
,那么你可以做以下事情: