Python判断列表中是否有某个项,如果有将其移除,并输出移除后的列表长度和列表元素

直接上代码:

# 输入一个列表lt,判断val是否在lt中,如果在,将其删除,最后输出删除后的lt和lt的长度

def remove_element(lt, val):
    k = 0
    for i in range(len(lt)):
        if lt[i] != val:
            lt[k] = lt[i]
            k += 1
    return k


if __name__ == '__main__':
    lt = list(map(int, input().split(' ')))
    val = int(input())
    k = remove_element(lt, val)
    print(k)
    print(' '.join(map(str, lt[:k])))  # lt[:k],从0开始截取,截取k位

这个算法比较巧妙:遍历列表,把列表中的每一项与匹配项进行比较,如果不相等就把下标为i的列表的值赋值给下标为k的列表,因为初始时k=i=0,意思就是取出当前项再赋值给当前项,假设有列表[1,2,3],匹配项val是2,则循环第一次后1的位置不变,当i=1,k=1时,也就是列表元素为2时,lt[i]!=val为false,进入下一次循环,此时k=1,i=2,lt[2]!=val (备注:lt[2]=2)满足条件,则执行lt[k]=lt[i],3会覆盖2的位置,列表就变成了[1,3,3],循环完毕,返回k值,再使用字符串截取lt[:k],截取从0位置开始,截取长度为k的闭区间长度的字符串,所以为1,3

运行结果如下:

猜你喜欢

转载自blog.csdn.net/baidu_39105563/article/details/122203853