我正在尝试遍历一个列表并将一些 元素保存到一个新列表中:那些比前一个值大 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)允许您轻松获取列表(或任何可迭代对象)中每个元素的索引和值。
