2017-10-16 31 views
-1

我試着從最大的一個開始得到l2中的數字,並且它們中的每一對都應該大於或等於2.這種情況只適用於l1具有多於一個元素的情況。因此,對於l2 = [2,1,8,3,6,4],由於4-3 < 2期望輸出爲l1 = [8,6,4] 2第四大3不會被採用。這裏是我的代碼For循環只能處理兩個步驟

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

我不明白你的要求對此語句。 –

+0

'lst'定義在哪裏? –

+0

對不起,也許還不清楚。首先把l2中的最大數a加到l1中,然後在l2 b中加上第二大數,如果a-b> = 2,則將b加到l1中。重複此步驟,直到出現n-m <2。 –

回答

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() 
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