首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么值4在从数组中删除后仍会打印出来

在从数组中删除元素后仍然打印出来的原因是因为数组的索引是从0开始的。当我们删除数组中的一个元素时,实际上是将该元素后面的所有元素向前移动一个位置,覆盖被删除的元素。但是,数组的长度并没有改变,最后一个位置仍然存在,只是它的值变成了原数组中倒数第二个元素的值。

具体来说,如果数组中有n个元素,索引范围是从0到n-1。当我们删除索引为i的元素时,索引为i+1到n-1的元素都会向前移动一个位置,填补被删除元素的位置。最后一个位置的元素并没有被移动,它仍然存在于数组中。

所以,当我们遍历数组并打印元素时,最后一个位置的元素仍然会被输出,即使它实际上是被删除的元素。

这个问题可以通过在打印元素之前检查索引是否超出数组长度来解决。如果索引超出了数组长度,就不打印该元素。

以下是一个示例代码,演示了如何在删除元素后避免打印最后一个位置的元素:

代码语言:python
代码运行次数:0
复制
arr = [1, 2, 3, 4, 5]
n = len(arr)

# 删除索引为2的元素
del arr[2]

# 遍历数组并打印元素
for i in range(n-1):
    if i < len(arr):
        print(arr[i])

在这个示例中,我们使用del关键字删除了索引为2的元素(值为3)。然后,我们使用一个循环遍历数组并打印元素。在每次迭代中,我们检查索引是否小于数组的长度,如果是,则打印该元素。

这样,即使删除了元素,我们也可以避免打印最后一个位置的元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android-Gson小总

打印 打印结果: ? 总结,就是通过new JSONObject和JSONArray对象,让后put()进去即可。 我们看一看google推荐的gson是如何存储json数据的: ? ?...如果value值为null,仍会保留该键 本人最近发现在高版本的gson中已经没有JsonObject了(比如2.8.5),但是有JsonReader可以继续解析,不知道是不是不推荐了,这里就不跟大家详聊了...说完了区别,我们来说一说常见的Gson与各种类型的转化  一:生成json 这个我们之前代码已经体现出来了: ?...打印: ? 数据结构: ? 如果我们JsonObject对象包含的key都叫name的话,我们就只会有一个name = "王五"的。只会保留最后一个。 二:json和数组之间的转化。 ? ?...总结:其实就是gson.fromJson()和toJson()的调用 三:Json数组和List之间的转化 ? 打印: ?

98430

50道JavaScript详解面试题,你需要了解一下

4、Line1和Line2的控制台输出是什么? 在Line1中,我们有两个相互比较的对象,并且它们都是唯一的,因此它将在控制台上记录为False。...因为set和get中的Object是内存中两个不同的空对象,因此getter不会返回值。 23、控制台输出是什么,为什么?...但是,可以在JavaScript中通过在未将所有可能的参数都传递给函数时返回不同的输出来执行重载。 29、return语句在数组的forEach循环中做什么?...47、控制台输出是什么,为什么? 它返回h,因为数组在JavaScript中是从零开始的,因此arr [2] [1]将可以访问外部数组的第3个元素和内部数组的第2个元素,从而得出值“ h”。...它们都将值对存储在Web浏览器中,但是sessionStorage在浏览器关闭后会删除存储的值。 49、!运算符返回一个布尔值。真的吗?

3.5K40
  • DS:顺序表的实现

    ,一开始不确定大小,程序员可以根据过程中的需求去合理开辟 int capacity;//空间容量,假设我们扩容了,用其记录扩容后动态数组的大小。...但是在子程序(非main函数)中,return 不会执行这些操作,而 exit() 仍会执行。...其实都是可以的(可以仔细看看上面所有接口,比如将int换成float是否通用),打印函数是不可以的,因为这个函数本身的存在意义就是为了方便我们当每次封装完一个接口的时候,可以通过main函数去调用,并使用打印函数打印出来...综上,希望友友们可以利用这个打印函数,每写完一个功能的函数就自己去调用检测一下,如果有问题就自己去调试,相比直接抄,会有很大收获的!!下面我会把所有代码都写出来方便友友们复制!!...,一开始不确定大小,程序员可以根据过程中的需求去合理开辟 int capacity;//空间容量,假设我们扩容了,用其记录扩容后动态数组的大小。

    12710

    理解原型与原型链

    在软件设计模式中,有一种模式叫做原型模式,JavaScript正是利用这种模式而被创建出来。先来了解下原型模式的概念:原型模式是用于创建重复的对象,同时又能保证性能。...__proto__),控制台打印的结果是function(){},为什么Person的原型是function呢?这是因为Person是一个构造函数,它的本质就是一个函数。...for(var key in c){ console.log(c[key]) } //会在控制台中依次打印出4 3 1 2 注意在控制台中打印的顺序是 4 3 1 2,而不是 1 2 3 4...C对象只有一个d属性,执行for...in时先返回C.d,然后在从C的原型(B)中查找到并返回B.c,再从B的原型(A)中查找到并返回A.a和A.b,最后从A的原型(Object)中查找,发现Object...getOwnPropertyNames 函数: getOwnPropertyNames 函数可以获取对象所有的自身属性,返回值是由对象自身属性名称组成的数组,同样不会向上查找对象原型链。

    56320

    java中的排序除了冒泡以来, 再给出一种方法, 举例说明

    9.5 排序:   有一种排序的方法,非常好理解,详见本题的步骤,先找出最大值和最小值,把最小值打印出来后,把它存在另一个数组b当中,再删除此最小值,之后再来一次找出最小值,打印出最小值以后,再把它存在另一个数组...b当中,再删除此最小值,这样循环往复,直到做完,你就会发觉,你已经把排了序数放在b数组当中了,而这里的彻底删除最小值的方法就是用比最大值还大一的数来取代最小值。...(自己想想为什么?)参考后面的答案你会发觉,按照下面的四步,你已经把一个数组排序了。...//用这个全局变量来记录最小数的位置索引,     public static void main(String[] args) {         int[] a = {6, 12, 7, 23, 4}...,马克-to-win给替换成max+1,这样就相当于把原来的最小值从这个数组当中彻底清除掉了。

    28040

    面试小知识

    echo 和 print 都可以做输出,两者不同的是 echo 不是函数,没有返回值,print是函数有返回值; 所以相对而言如果只是输出,使用echo更好,echo会更快,而print_r通常用于打印变量的相关信息...print 是打印字符串 print_r 则是打印复合类型 如数组 对象 session和cookie的区别和优缺点?...1 array() 创建数组 2 count() 返回数组中元素的个数 3 array_push() 将一个或多个元素插入数组中...(入栈) 4 array_column() 返回输入数组中某个单一列的值 5 array_combine() 通过合并两个数组来创建一个新数组 6 array_reverse(...) 以相反的顺序返回数组 7 array_unique() 删除数组中的重复值 8 in_array() 检查数组中是否存在指定的值 PHP处理字符串的常用函数说一说

    2.7K20

    初识HIVE

    HIVE定义了简单的类似SQL的查询语言HQL,HIVE会将解析后的语句转移成MapReduce Job在Hadoop执行,一张Hive的表其实就是HDFS的文件 HIVE的元数据,用来描述表本身信息...,存储在deby中 HIVE中一些表的概念 管理表:也称作内部表,删除这张表的同时,数据也会被删除; 外部表:创建时用external标识,hive没有完全拥有这张表的数据,删除外部表只会删除hive...中元数据,而数据仍会保留; 分区表:是管理表和外部表在创建时指定的一种水平分散压力的方式,在创建表时,通过语句PARTITION BY指定,查询可以通过where语句添加分区字段进行过滤(分区过滤器)...子查询都必须具有相同的列 inner join,带on条件,左右两个表都有值的时候,才输出; left outer join,符合where条件的左表有值就输出,右表没有用NULL代替; right outer...的排序是全局排序的,但是是以去掉并行性为代价 sort by:是对每个ruducer排序,多个reducer顺序不一样,速度会快于order by ,order by是全局排序 动态分区与静态分区 静态分区:在从一个表获取数据插入另外一张表的时候

    85920

    第三章 内建容器 数组, 切片, map

    然后打印. 在打印原数组. 结果如下: 证明数组是值拷贝类型 100 0 0 0 0 100 4 6 8 10 [0 0 0 0 0] [2 4 6 8 10] 5. 如何实现数组的地址传递呢?...发现s的值变化了. 说明, 切片传递是地址传递, 而不是值传递. 可是上一章讲指针的时候,不是说go中只有值拷贝一种类型么? 那么为什么slice不是值拷贝呢? 因为slice是数组的一个视图....最终指向的都是数组中的地址 updateSlice(s2): 这个操作就比较有意思了. 我们看到, 对二次reslice后的数组,修改他的第一个元素的值....虽然s1只有4个元素, 因为他是可以看到底层其他后面的元素的, 所以, s2能够把数组中第5个元素取出来. ? 那么取出来对应的元素值时多少呢?对应到底层数组, 他的值就是5和6 ?...= [100 6 10 11 12] , arr1 = [0 1 2 3 4 5 6 10] ,len(s5) 5 ,cap(s5) 6 我们打印出了每一次变化后len的值和cap的值

    28710

    C语言常见概念

    )的ASCII码值的差值是32数字字符0~ 9的ASCII码值从48~57换⾏ \n 的ASCII值是:10在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察单个字符的打印可以使...C语言中也可以把⼀个字符串放在⼀个字符数组中,我们在这⾥利⽤下⾯的代码验证⼀下 \0 的功能。...> 字符数组在打印的时候,打印了 a 、 b 、 c 后还打印了⼀些随机值,这就是因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停...但是 arr2 的打印就是完全正常的,就是因为 arr2 数组是使⽤字符串常量初始化的,数组中有 \0作为技术标志,打印可以正常停⽌。...如果我们在arr1数组中单独放⼀个 \0字符会怎么样呢?

    7410

    2019.4.7---Java面试题

    引用变量比较的是地址,所以第一个打印出来为true。 2.HashMap里的hashcode方法和equal方法什么时候需要重写?如果不重写会有什么后果?...这里由于hashcode一样,所以得出的数组下标位置相同。所以会在该数组位置创建一个链表,后put进入的元素到放链表头,原来的元素向后移动。...(参考数组与链表来思考) 3.对于新增和删除操作add和remove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间。...ans: volatile 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。volatile很容易被误用,用来进行原子性操作。...2秒钟以后控制台打印stope1182150156。 问题出现了,为什么我在主线程(main)中设置了vt.flag = true; 而vt线程在进行判断flag的时候拿到的仍然是false?

    78700

    整型在内存中的存储

    前言: 本文章旨在从例题中加深对整型在数据中的存储的相关知识的理解。 首先我们需要明确整型在内存中都是以补码的形式进行计算 例1: 解析: 首先我们需要明确整型在内存中都是以补码的形式进行计算。...接着将一个整型类型的数据存储在char类型,需要进行截断(直接截断整型的后8位)。 所以存储在a中的补码就是8个1。同理目前在a,b,c中存储的都是8个1....综上,a,b的打印结果都是-1,c的打印结果是255 总结: 因为将整形数据存储在char类型中,所以先进行截断,接着%d打印又需要整型提升!...(因为存在内存中的值都是一样的) 例4: 解析: 首先将两个数的补码表示出来,然后利用补码计算。...例6: 解析: 首先我们从数学的角度理解在数组a里面存储的应该是-1~-1000,但是又因为a是一个char类型的数组,而一个char类型的数组只能存的下-128~127,所以在数组真实的存储情况是这样

    9910

    laravel 学习之路 Collections

    这就要了解下 Collections 对象,在 laravel 中 collection 是比数组更高等般的存在,我们可以像对待数组一样的来操作 collection,而且它还能以链式操作的方式便捷易读的处理数据...u', '啦', 'p', '主', '真', '帅', false, null]; # 打印创建的数组 dump($array); # 把创建的数组转为...比如把 $array 中的啦字去掉,接着过滤掉其中为 false 为空字符串 为 null 的值 最后用 - 连接起来拼成 'up主真帅' 我们先用数组先玩一玩 function testArray...} 两种方式打印出来的结果是一样的 ?...up 17年刚刚接触 laravel 的时候不知道 collection 是个啥,只知道数组数据库查出来的时候都懵逼了百度半天才知道 ->toArray() 可以把 collection 转成数组,每次都是转成数组玩

    80330

    【Linux】命令行参数和环境变量

    几个问题 1.为什么函数的返回值会被外部拿到呢? 答:返回的时候会保存到寄存器里,通过CPU的寄存器拿到数据。         当返回的数据很大时,会用多个寄存器保存。.../mycmd -a -b -c  -d" 被当成一个字符串,以空格为分隔,被分成了五个字符串,然后再依次填入argv指针数组中,最后一个位置的下一个位置再填成空指针。 那么这有什么用呢?...使用下面命令,查看PATH环境变量 echo $PATH //$符号用于提取环境变量的值,否则只是单纯的打印PATH  可以看到,这一串用 " : " 分隔开的路径,就是系统寻找命令的路径,我们可以把当前路径添加进...echo命令打印出来?...如果需要创建子进程,那么因为本地变量不会被继承,也就不会被打印出来,可事实并非如此。

    13010

    数据结构---顺序表

    最基础的数据结构:数组 【思考】有了数组,为什么还要学习其他的数据结构?...假定数组有10个空间,已经使⽤了5个,向数组中插⼊数据步骤: 求数组的⻓度,求数组的有效数据个数,向下标为数据有效个数的位置插⼊数据(注意:这⾥是 否要判断数组是否满了,满了还能继续插⼊吗)........在插入之前我们需要看看内存够不够,不够就要增容 我们在测试文件(test.c)里面测试一下我们的尾插,为了方便我们查看尾插是否插入数据我们写把它打印出来。 ...; i--) { ps->arr[i] = ps->arr[i - 1]; } ps->arr[0] = x; ps->size++; } 通过for循环遍历将元素整体往后挪动一步,遍历完后第一个元素的位置已经空出来了直接把...(&sl, 3);//指定位置删除数据 SLPrint(sl);//打印 int find = SLFind(&sl, 4); if (find == -1) { printf("没有找到

    8310
    领券