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

python – 迭代时从列表中删除

发布时间:2020-12-20 12:09:24 所属栏目:Python 来源:网络整理
导读:参见英文答案 How to remove items from a list while iterating?????????????????????????????????????23个 我有一份清单 a = [1,2,3,4,5,6,7,8,9]b = [10,11,12,13,14,15,16,17,18] 遍历列表b时,如果任何数字小于15,则从列表a中删除其对应的数字(索引). 例
参见英文答案 > How to remove items from a list while iterating?????????????????????????????????????23个
我有一份清单

a = [1,2,3,4,5,6,7,8,9]

b = [10,11,12,13,14,15,16,17,18]

遍历列表b时,如果任何数字小于15,则从列表a中删除其对应的数字(索引).

例如: – 在列表中b 10,14小于15,因此应删除列表a中的对应物,即1,5.

目前,这就是我正在做的事情:

for index,i in enumerate(b):
    if i < 15:
        del(a[index])

这会返回一个超出范围的索引错误.

我怎样才能做到这一点?

解决方法

你应该使用list comprehension和zip而不是删除a中的元素,而是取b值超过15的元素.示例 –

a[:] = [i for i,j in zip(a,b) if j >=15]

我们在左侧使用[:],以便列表对象在原地变异. (这与a =< something>不同,因为后者简单地将名称a绑定到新列表,而前者在列表中改变列表).

演示 –

>>> a = [1,9]
>>>
>>> b = [10,18]
>>> a[:] = [i for i,b) if j >=15]
>>> a
[6,9]

(编辑:李大同)

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

    推荐文章
      热点阅读