美文网首页
【Python】for循环修改list的时候,会丢元素

【Python】for循环修改list的时候,会丢元素

作者: 失语失芯不失梦 | 来源:发表于2021-12-18 17:54 被阅读0次

最开始是这样的,写了一段逻辑如下:

all_to_handle_cards = self.icafe_obj.get_all_cards_data(last_monday_before, last_sunday)
for card in all_to_handle_cards:
     db_data = self.db_obj.select(card['card_id'])
     if db_data is not None:
           all_to_handle_cards.remove(card
           print("卡片:%s 已提醒过建卡") % card['card_id']
return all_to_handle_cards

想要实现的功能就是:获取一个列表数据:all_to_handle_cards,遍历此列表,如果卡片已经在库里面有了,就把它从列表里删除。最后列表里只存储库里面没有的卡片数据

但是我发现,处理的时候,最后的数据会漏处理几条,也就是说,比如:all_to_handle_cards=[1,2,3,4],然后数据库里面有[1,2],那按照我的想法最后列表剩下的数据应该是[3,4]。实际上,处理后剩下的是[2,3,4]

然后百度了一番,找到了原因:用remove方法其实是移走了当前元素,所有后面的列表元素都会往前推进,这时候你移到下一个元素时已经跳过一个元素了

解决方法就是:新建一个列表存储想要的数据
修改之后的逻辑如下:

all_to_handle_cards = self.icafe_obj.get_all_cards_data(last_monday_before, last_sunday)
# 重新定义一个列表存储需要提醒建卡的卡片数据
need_remind_cards = []
for card in all_to_handle_cards:
     db_data = self.db_obj.select(card['card_id'])
     if db_data is None:
           need_remind_cards.append(card)
     else:
           print("卡片:%s 已提醒过建卡") % card['card_id']
return need_remind_cards

参考链接

相关文章

  • 【Python】for循环修改list的时候,会丢元素

    最开始是这样的,写了一段逻辑如下: 想要实现的功能就是:获取一个列表数据:all_to_handle_cards,...

  • python遇到的坑

    1、for 循环不能直接丢修改列表元素的值 想要修改要通过列表的索引

  • 列表

    修改列表元素: list[1,2,"python"]:列表,类似于C和Java的数组example_list = ...

  • 循环

    for循环 Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,...

  • 获取python list的元素索引

    1 python list 元素无重复,如下: 1 python list 元素有重复,如下:

  • Python 6:循环

    循环 python 中循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来: 执...

  • Python 基础语法四-list 与 tuple

    list list(列表)是有序、可变的数据集合,可以随时添加、删除和修改元素,同时也是 python 内置的一种...

  • 关于List.remove越界

    每次调用一次list.remove,list的索引会自动+1,即移除掉元素后,后面的元素会往上移动 所以当使用循环...

  • Python基础(五)循环

    1.循环 Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来 f...

  • java中List删除报错 java.util.Concurre

    参考链接 上代码先 list中数据是不能在原有集合修改,需要循环删除list中多个元素的,应该使用迭代器itera...

网友评论

      本文标题:【Python】for循环修改list的时候,会丢元素

      本文链接:https://www.haomeiwen.com/subject/rymgfrtx.html