我尝试从最大值开始获取l2中的数字,并且每对减去的数量应该大于或等于2.这种情况仅在l1具有多于1个元素时才有效。因此,对于l2 = [2,1,8,3,6,4],期望输出为l1 = [8,6,4],因为4-3 <2,将不会采用第四大3。这是我的代码
l2=[2,1,8,3,6,4]
l1=[]
def check():
i = max(l2)
l2.remove(i)
if len(l1)>1:
for number in l1:
if (abs(number - i)) < int(2):
break;
else:
l1.append(i)
check()
但输出是[8,6]。任何人都可以告诉我如何纠正它?
答案 0 :(得分:1)
如果我理解你想要的是这个:
l2=[2,1,8,3,6,4]
l1=[]
def check():
i = max(l2)
l2.remove(i)
if len(l1) > 0:
for number in l1:
if abs(number - i) < 2:
return l1
l1.append(i)
check()
答案 1 :(得分:0)
希望这可以解决您的问题:
1 l2 = [2, 1, 8, 3, 6, 4]
2
3 def generate_l1(l):
4 copy = list(l)
5 result = []
6 result.append(max(copy))
7 copy.remove(max(copy))
8 while result[len(result) - 1] - max(copy) >= 2:
9 result.append(max(copy))
10 copy.remove(max(copy))
11 return result
12
13 print(generate_l1(l2))
函数generate_l1
从给定列表l
生成预期列表,而不修改原始列表l2