我在编程方面相当新手,我正在使用 sqlite3 在 python 中工作,并且我有一列数字已排序,但可能存在间隙(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) 无论如何。
您的代码 id 是元组,但您正在与 int 进行比较。
id = int(id) if id > previousId+1: id = previousId+1
你可以试试这个吗
PS部分的部分答案:
flattened_list = tuple(x[0] for x in ((1,), (2,), (3,)))