Skip to main content
 首页 » 编程设计

python之遍历列表并将满足条件的元素保存到新列表

2025年05月04日16telwanggs

我正在尝试遍历一个列表并将一些 元素保存到一个新列表中:那些比前一个值大 50 的元素。我当前的代码只保存第一个值。我想要 [0, 76, 176, 262, 349]。

list = [0, 76, 91, 99, 176, 192, 262, 290, 349] 
new_list = [] 
for i in list: 
    if ((i+1)-i) > 50: 
        new_list.extend([i]) 

请您参考如下方法:

解决方案

What I want is to save the values 0, 76, 176, 262, and 349.

所以听起来您想遍历列表,如果当前元素比其前一个元素大 50,则将其保存到列表并重复。 此解决方案假定原始列表已排序。让我们将其转换为一些代码。

lst = [0, 76, 91, 99, 176, 192, 262, 290, 349] 
new_lst = [] 
for i, num in enumerate(lst): 
    if i == 0 or num - lst[i-1] > 50: 
        new_lst.append(num) 
 
print(new_lst) 
# [0, 76, 176, 262, 349] 

这里有趣的部分是循环中的条件:

if i == 0 or num - lst[i-1] > 50: 

第一部分考虑我们是否在第一个元素处,在这种情况下,我假设您无论如何都想添加该元素。否则,获取当前元素与原始列表中的previous 元素之间的差异,并检查差异是否大于 50。在这两种情况下,我们都希望将元素追加到列表中(因此或)。

注意事项

  • 您应该避免将 list 用作变量,这样您就不会隐藏内置的 Python 类型。
  • lst.extend([num]) 最好写成 lst.append(num)。
  • enumerate(lst) 允许您轻松获取列表(或任何可迭代对象)中每个元素的索引和值。