从列表中删除数字,其中两个数字之间的差小于特定数字

时间:2019-01-02 12:19:24

标签: python-3.x

a = [2, 5, 6, 12, 21, 25, 32, 41]

这是我的list,我想删除所有不相差7的数字。

2 个答案:

答案 0 :(得分:0)

在深入探讨答案之前,让我们先看一下我们正在处理的内容。

您获得了一个列表“ A”,您需要遍历该列表以获得大于前一个值+ 7的数字列表

如果把问题归结为一个简单的问题,就会有两个主要目标

  • 我们需要一个循环
  • 我们有一个最终答案列表

解决此问题有两种通用方法。在一个循环中,我们填充一个新列表。第二种方法是操纵原始列表。 尽管“第一”方法需要额外的内存,但为简单起见,我将使用“第一”方法。

a = [2, 5, 6, 12, 21, 25, 32, 41]     # your original list
b = []           # Empty list that will contain final product

for i in range(len(a)):
    if len(b) == 0:       # if the list is empty, we add first item from 'a' (In our example, it'll be 2)
        b.append(a[i])
    else:
        if a[i] > b[len(b)-1]+7 or a[i] < b[len(b)-1]-7:   # for every value of a, we compare the last digit from list b
            b.append(a[i])

答案 1 :(得分:-1)

据我所知,在您的输出列表中,只有那些总和为7的元素在那里。因此可以通过

实现
i=1;
while i<len(a):
    if(a[i]-a[i-1] < 7):
        a.remove(a[i])
    else:
        i+=1
print(a)