检查python列表中的序列

Hac*_*ide 4 python list

我有一个清单[T20,T5,T10,T1,T2,T8,T16,T17,T9,T4,T12,T13,T18]

我已经删除了T,转换为整数类型并对列表进行排序以获得:

sorted_ids = [1,2,4,5,8,9,10,12,13,16,17,18,20]

我循环遍历列表并检查当前数字的下一个数字是否按数字顺序排列.如果不是,我想在其位置插入"V".

因此最终列表应如下所示: [1,2,V,4,5,V,V,8,9,10,V,12,13,V,V,16,17,18,V,20]

但是,我无法在正确的位置插入精确的V值.

def arrange_tickets(tickets_list):

    ids=[]
    for item in tickets_list:
        new_str=item.strip("T")
        ids.append(int(new_str))
    sorted_ids = sorted(ids)
    temp_ids = []
    print("Sorted: ",sorted_ids)
    #size = len(sorted_ids)
    for i in range(len(sorted_ids)-1):
        temp_ids.append(sorted_ids[i])
    
        if sorted_ids[i]+1 != sorted_ids[i+1] :
            temp_ids.insert(i+1,"V")
    print(temp_ids)
    #print(sorted_ids)
    

tickets_list = ['T20', 'T5', 'T10', 'T1', 'T2', 'T8', 'T16', 'T17', 'T9', 'T4', 'T12', 'T13', 'T18']
print("Ticket ids of all the available students :")
print(tickets_list)
result=arrange_tickets(tickets_list)
Run Code Online (Sandbox Code Playgroud)

实际结果:[1,2,'V',4,'V',5,8,'V',9,'V',10,12,'V',13,16,17,18]

预期结果:[T1,T2,V,T4,T5,V,V,T8,T9,T10,V,T12,T13,V,V,T16,T17,T18,V,T20]

Joh*_*man 5

这是一个列表理解,可以让你得到你想要的:

sorted_ids=[1, 2, 4, 5, 8, 9, 10, 12, 13, 16, 17, 18, 20]
a = sorted_ids[0]
b = sorted_ids[-1]
nums = set(sorted_ids)
expected = ["T" + str(i) if i in nums else 'V' for i in range(a,b+1)]
print(expected)
Run Code Online (Sandbox Code Playgroud)

输出:

['T1', 'T2', 'V', 'T4', 'T5', 'V', 'V', 'T8', 'T9', 'T10', 'V', 'T12', 'T13', 'V', 'V', 'T16', 'T17', 'T18', 'V', 'T20']
Run Code Online (Sandbox Code Playgroud)