盘点Python列表的一道基础题目
共 2148字,需浏览 5分钟
· 2022-03-23
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
太乙近天都,连山接海隅。大家好,我是Python进阶者。
一、前言
前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python列表的问题,这里拿出来给大家分享下,一起学习下。
![267624ff6ef457e31e84fcc5b41fdd25.webp](https://filescdn.proginn.com/cf717d566cd81b4498e37fa02718f669/267624ff6ef457e31e84fcc5b41fdd25.webp)
图片有点模糊,这里直接手敲出来了,如下:
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 in
中i
最多取到6,即最多循环7次。
![dc0fc5147c6b9f1026f287c3a02cd21c.webp](https://filescdn.proginn.com/ef2db6735bb4d2eeb3dc6f922b71fe0b/dc0fc5147c6b9f1026f287c3a02cd21c.webp)
下面给这个代码,加了点注释,这样理解起来就清晰了。
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])
![953a7ac36d4bd99862ae3c9d7fd87bae.webp](https://filescdn.proginn.com/33919cd24e02fc0539f8eb59dff3781c/953a7ac36d4bd99862ae3c9d7fd87bae.webp)
别走,这个题目还有变形,且看【Chloe】发来的另外一个题目,如下图所示:
![ba026dcdc4839fd79dc2082860b7b518.webp](https://filescdn.proginn.com/d16508ffac3966bb012a9d135b43df1d/ba026dcdc4839fd79dc2082860b7b518.webp)
图片有点模糊,这里直接手敲出来了,如下:
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语句。
![63f3acfc48863af71b0da31193d28955.webp](https://filescdn.proginn.com/5aeeafaf5c95553d51e5fa6aeb8fad19/63f3acfc48863af71b0da31193d28955.webp)
上周的时候,也确实发过列表这个坑的文章,具体的细节可以前往文章查看:盘点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
![917a4d6abfb8f7173c511be95ff0386a.webp](https://filescdn.proginn.com/ac4edb8d10148e247411f17f09a304a6/917a4d6abfb8f7173c511be95ff0386a.webp)
三、总结
大家好,我是Python进阶者。这篇文章主要分享了Python列表中的增加问题,每次循环会检查List,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。
![b84eb57ec0da0072a87a6423e190be7b.webp](https://filescdn.proginn.com/d33f64f44515f0b24cee61e60218a086/b84eb57ec0da0072a87a6423e190be7b.webp)
最后感谢粉丝【Chloe】提问,感谢【月神】和【dcpeng】给出的具体解析和代码演示,感谢【PI】、【孤独】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
------------------- End -------------------
往期精彩文章推荐:
![2fca476e6a6573d16a79f8147a5c8fdc.webp](https://filescdn.proginn.com/a48d0c78f4b68914b87cfd51d29fb05a/2fca476e6a6573d16a79f8147a5c8fdc.webp)
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行