栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

for循环 Python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

for循环 Python

for循环的基本概念

        for item in items:这样就可以根据下标来循环一个列表,并且用将列表中的数据用item来命名

        举个简单的例子:

lst = [1, 2, 3, 4, 5]
for item in lst:
    print(item, end='')

        输出的结果就是12345,完成了列表的遍历,并输出了每一个数据。

利用for循环删除某一种数字

        假设有个lst列表[1,2,3,2,5,2,6],我们想要删除列表里面所有的2

lst = [1, 2, 3, 2, 5, 2, 6]
for i in lst:
    if i == 2:
        lst.remove(i)
print(lst)
#输出的结果为[1,3,5,6]

        看着是不是很简单,但是注意了,如果我们的列表是[1,2,2,3,5,6]这样的

lst = [1, 2, 2, 3, 5, 6]
for i in lst:
    if i == 2:
        lst.remove(i)
print(lst)
# 输出的结果为[1,2,3,5,6]

        我们可以看到,有个2没有被删除掉。

        想搞清楚这是为什么,我们就先来了解一下for循环的原理,在for循环中遍历列表,是通过下标来实现的,也就是说第一次是把下标为0的数字赋值给i,第二次是把下标为1的数字赋值给i,一次类推,那么假设当我们对下标为2的数据进行了删除操作时,python就会自动把后面的下标为3,4,5的数据给前移,也就是说下标为3的数字的下标变成了2,那么在下一次for循环选取数据的时候,就会选取下标为3的数据,也就是选到了原来下标为4的那个数字,而原本下标为3的数字就会被忽略掉,也就是说我们删除了一个数据之后,这个数据的下一个数据就会移动到这数据的位置,导致下一个数据被忽略掉。

        想要解决这个问题,最简单的办法就是创建一个新的列表来接收lst,然后遍历新的列表,达到删除lst列表里的元素的目的,在这里有一个误区,我们都知道列表可以通过赋值操作来完成,所以可能会想到用赋值操作来创建一个新列表,如

lst = [1, 2, 2, 3, 5, 6]
lst2 = lst
print(lst2)
# 输出的结果是[1,2,2,3,5,6]

              注意,虽然lst2和lst里的数据相等,但是在上一篇文章切片操作中,我们说到,将列表赋值给新列表之后,新列表的地址和原本列表地址是相同的,所以当原来列表里的元素被删除时,新列表的元素也会同步被删除,所以上述问题依然存在。

lst = [1, 2, 2, 3, 5, 6]
lst2 = lst
for i in lst2:
    if i == 2:
        lst.remove(i)
print(lst)
# 输出的结果是[1,2,3,5,6]

        可以清楚的看到,2并没有被删除干净,上述问题依然存在。

        所以这里就要用到切片操作了,在切片操作中我们说到,我们通过切片之后的列表不是原本的列表,而是一个新的列表,这个列表的地址已经不再是原本列表的地址了,所以修改原列表的时候就不会牵扯到新列表了,上述的问题就能得到完美的解决。

lst = [1, 2, 2, 3, 5, 6]
lst2 = lst[:]
for i in lst2:
    if i == 2:
        lst.remove(i)
print(lst)
# 输出的结果是[1,3,5,6]

        这样,我们就得到了我们想要的结果(想要一个一个遍历删除整个列表中的元素也同样用这个方法)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号