加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何优化代码以从列表列表中删除所有列表中的n位置

发布时间:2020-12-20 11:59:21 所属栏目:Python 来源:网络整理
导读:我在网站上搜索此问题,我发现很多关于从列表列表中删除特定值的帖子. 但是,这不能回答我的问题. 让我们: mylist=[[1,2,3,4],[100,374,283,738]] 现在,在我看来,两个列表是相互关联的.列出1个数字项目:1,4,…和列表2这些项目的功能(例如价格:100美元,374美
我在网站上搜索此问题,我发现很多关于从列表列表中删除特定值的帖子.

但是,这不能回答我的问题.

让我们:

mylist=[[1,2,3,4],[100,374,283,738]]

现在,在我看来,两个列表是相互关联的.列出1个数字项目:1,4,…和列表2这些项目的功能(例如价格:100美元,374美元等).

现在,我想从列表中删除元素(数量和价格),如果list2高于某个值(例如,如果一个项目太贵,超过300美元)

我一直在尝试,我得到了这个:

n=0 # counter for position in the list
for i in mylist[1]:
    if i>300:
        for j in mylist:
            del j[n]
    n=n+1

结果:

[[1,3],283]]

这实际上有效.它看起来效率不高:我必须多次访问列表,我必须创建新的变量.循环太多了.

由于列表可以使用理解列表,我很想知道是否有更高效和优雅的方法获得相同的结果

谢谢

解决方法

使用带过滤生成器表达式的zip:

>>> mylist = [[1,738]]
>>> mylist[:] = list(map(list,zip(*((a,b) for a,b in zip(*mylist) if b<300))))
>>> mylist
[[1,283]]

请注意,这会保留旧的mylist指针,以模仿代码修改原始列表的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读