温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中怎么实现循环遍历

发布时间:2021-07-10 15:26:18 来源:亿速云 阅读:281 作者:Leah 栏目:互联网科技

今天就跟大家聊聊有关python中怎么实现循环遍历,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

python之循环遍历

关于循环遍历大家都知道,不外乎for和while,今天我在这写点不一样的循环和遍历。在实践中有时会遇到删除列表中的元素,那么循环遍历列表删除指定元素该怎么做呢?

还是直接上代码看案例吧:

import time

# 删除下面列表中所有张姓元素,输出的结果应该是['李老大','李老二']
lst = ['张老大', '张老二', '李老大', '张老三', '李老二']*10000

# 直接for循环遍历列表,remove需要删除的元素
def del1(lst):
    for i in lst:
        if i[0] == '张':
            lst.remove(i)  # 在删lst[0]'张老大'的时候,列表长度变成4,导致lst[1]取值成了'李老大',跳过了'张老二'
    return lst  # 返回的结果不符合预期


# 正向遍历,通过建一个原列表的副本,然后遍历副本,删除原列表中的元素
def del2(lst):
    lst2 = lst.copy()  # 创建副本内存和时间开销大
    for i in lst2:
        if i[0] == '张':
            lst.remove(i)  # 删除第一个匹配的元素,检索匹配时间开销大
    return lst  # 结果虽然正确,但效率极低,不要用这种方法


# 使用高阶函数filter方法
def del3(lst):
    def comp(n):  # 创建过滤函数
        return n[0] != '张'  #对于首字符不是'张'的元素返回True,予以保留。若返回False的予以删除。
    return list(filter(comp, lst))  # filter高阶函数删除列表中的元素,
#  删除条件是comp方法,返回的是迭代器,需要list方法转成列表


# 倒序删除法
def del4(lst):
    for i in range(len(lst) - 1, -1, -1):  # 注意len(lst)必须-1,因为列表元素下标是0至len(lst)-1;注意for循环左开右闭,
# 从lst队尾循环到开头必须是-1,写0会漏了lst[0];-1表示倒序排列。range实际就是int数字列表生成式,在这实际生成的是
# [49999,49998,..1,0],通过下标访问列表的指定元素。
        if lst[i][0] == '张':
            del lst[i]
    return lst


# 倒序删除之while循环,效果和for序号一致,运行效率差别极其微小(for序号方法内存开销略大一点点)。while循环需要写7行,
# for循环只要5行,更推荐使用for循环。但while循环代码阅读起来更易懂。
def del5(lst):
    length = len(lst) - 1
    while length >= 0:
        if lst[length][0] == '张':
            del lst[length]
        length -= 1
    return lst


# lst = del1(lst)  # del1方法直接遍历列表删除指定元素,返回结果错误
# print(lst)

# t1 = time.time()
# lst = del2(lst)  # del2方法通过创建原列表副本,遍历副本删除原件中的指定元素,返回结果正确,但是运行效率极低
# t2 = time.time()
# print(f"遍历方法删除元素用时:{t2 - t1:.5f}")  # 4.51529,在这可以看到代码优化的必要性,运行结果虽然一致但性能差别极大。
# 评价性能一般看2个指标,1是时间消耗,2是资源消耗(通常指内存消耗,特殊场合还有别的资源消耗)。

t1 = time.time()
lst = del3(lst)
t2 = time.time()
print(f"filter方法删除元素用时:{t2 - t1:.5f}")  # 0.00596

# t1 = time.time()
# lst = del4(lst)
# t2 = time.time()
# print(f"遍历方法删除元素用时:{t2 - t1:.5f}")  # 0.07991

# t1 = time.time()
# lst = del5(lst)
# t2 = time.time()
# print(f"遍历方法删除元素用时:{t2 - t1:.5f}")  # 0.08516

看完上述内容,你们对python中怎么实现循环遍历有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI