盘点Python列表的一道基础题目

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

太乙近天都,连山接海隅。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python列表的问题,这里拿出来给大家分享下,一起学习下。

49eafdd6dca2eaa202bde09e9fb3d1dd.png

图片有点模糊,这里直接手敲出来了,如下:

List = [1, 2, 4, 5, 6, 7, 8]
for i in range(0, len(List)):
    if List[i] % 5 == 0:  
        List.append(9)
    if (len(List) - 1) == i:  
        print(List[i] + List[2])

答案没想到竟然不是13,而是无任何输出!

二、解决过程

这里【月神】给出了解答,for ini最多取到6,即最多循环7次。

dfd69c9ae634049e481044020f90a8b5.png

下面给这个代码,加了点注释,这样理解起来就清晰了。

List = [1, 2, 4, 5, 6, 7, 8]
for i in range(0, len(List)):
    if List[i] % 5 == 0:  # 当list[i]=5的时候,进入该循环,此时i=3,即list[3]=5
        List.append(9)
        print(f"此时的长度是{len(List)}")  # 此时List的长度是8,列表内容是[1, 2, 4, 5, 6, 7, 8, 9]
        print(List)
    print(f'此时的List[i]是:{List[i]}')  # 依次打印List中元素
    print(f'此时的i是:{i}')
    print(f'此时的len是:{len(List)}')
    if (len(List) - 1) == i:  # 之后i=4, 5, 6,而且此时len(List)却是8,len(List)-1就是7了,不会进入到该循环,所以不会有打印
        print(List[i] + List[2])
efefb219b8852e88193f4bf3fd4231a2.png

别走,这个题目还有变形,且看【Chloe】发来的另外一个题目,如下图所示:

a80e2ed564f5d7ffd15ca91fce74befb.png

图片有点模糊,这里直接手敲出来了,如下:

List = [1, 2, 4, 5, 6, 7, 8]
for i in List:
    if i % 5 == 0:  
        List.append(9)
        
    if (List[len(List) - 1]) == i:  
        print(i + List[2])

这个地方是遍历列表元素,每次循环会检查List,所以当append那个9之后列表会增长,会执行后面一个if语句。

7fe339ec71cf22ed0b242fb797a5de2e.png

上周的时候,也确实发过列表这个坑的文章,具体的细节可以前往文章查看:盘点Python列表在删除时候的一个坑。这里给代码加了点注释,理解起来应该就不难了。

List = [1, 2, 4, 5, 6, 7, 8]
for i in List:
    if i % 5 == 0:  # 当i=5的时候,进入该循环,此时i=3,即list[3]=5
        List.append(9)
        print(f"此时的长度是{len(List)}")  # 此时List的长度是8,列表内容是[1, 2, 4, 5, 6, 7, 8, 9]
    print(i)  # 依次打印列表中的元素
    if (List[len(List) - 1]) == i:  # 之后i=6, 7, 8, 9,而且此时len(List)却是8,len(List)-1就是7了,而List[len(List) - 1]=List[7],对应的值是9
        print(f"此时的List[len(List) - 1]是{List[len(List) - 1]},此时的i是{i}")
        print(i + List[2])  # 此时i=,List[2]=4
ff2465a90de9c00c892ae0612a48cb8d.png

三、总结

大家好,我是Python进阶者。这篇文章主要分享了Python列表中的增加问题,每次循环会检查List,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

dbcce471ee3dcb9287b27d8cb3df7aaf.png

最后感谢粉丝【Chloe】提问,感谢【月神】和【dcpeng】给出的具体解析和代码演示,感谢【PI】、【孤独】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

3253ccf376f9100b0f12037769ff39d2.png

------------------- End -------------------

往期精彩文章推荐:

b75860d2ff022e1bf2f13c3fe2ce9c3c.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【

万水千山总是情,点个【在看】行不行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值