微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这样做可以删除列表中的元素吗?

如何解决这样做可以删除列表中的元素吗?

# Program to remove high and low values in the list
data = [4,5,104,105,110,120,130,150,160,170,183,185,187,188,191,350,360]

index = 0
while index < len(data):
    if data[index] <= 100 or data[index] >= 200:
        del data[index]
        index = index - 1
    index += 1
print(data)

这段代码可以正常删除列表中的元素吗?

解决方法

在这种情况下,您绝对最好使用 filter,如下所示:

data = [
    4,5,104,105,110,120,130,150,160,170,183,185,187,188,191,350,360
]

filtered_list = list(filter(lambda x: 100 < x < 200,data))

就地修改列表从来都不是一个好主意。如果你真的想使用循环而不是过滤列表,你应该使用第二个列表而不是修改旧列表:

new_list = []
for val in data:
    if 100 < val < 200:
        new_list.append(val)

编辑

如果您的代码可以正常工作,而您只是想知道是否有更好的方法来完成您的任务,请考虑在 Code Review Stack Exchange 上发帖,因为这是解决此类问题的更好地方。

,

虽然您写的内容是正确的,但如果您只是想根据范围过滤值。你可以只使用 list comprehension:

data = [4,360]

filtered_data = [d for d in data if 100 < d < 200 ]
print(filtered_data)

输出:

[104,191]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。