2014-01-08 49 views
0

我有一個經常更改的動態整數列表,我希望能夠在列表中找到下一個最高出現次數。這是我的清單此刻的輸出:如果還有一個for循環替換

[u'4', u'32', u'72', u'100'] 

我寫了一個很長的if else語句來證實我的想法/方法確實可行。我現在希望能夠用for循環替換if語句(我認爲for循環應該是最好的),但是我在編寫for循環時遇到了很多問題。

如何將for if語句替換爲for循環?

if unicode(new_val_xx) in resume_menu_list01: 
    if unicode(int(new_val_xx)+1) in resume_menu_list01: 
     next_page = int(new_val_xx)+1 
    elif unicode(int(new_val_xx)+2) in resume_menu_list01: 
     next_page = int(new_val_xx)+2 
    elif unicode(int(new_val_xx)+3) in resume_menu_list01: 
     next_page = int(new_val_xx)+3 
    elif unicode(int(new_val_xx)+4) in resume_menu_list01: 
     next_page = int(new_val_xx)+4 
    elif unicode(int(new_val_xx)+5) in resume_menu_list01: 
     next_page = int(new_val_xx)+5 
    ..... 
    elif unicode(int(new_val_xx)+97) in resume_menu_list01: 
     next_page = int(new_val_xx)+97 
    elif unicode(int(new_val_xx)+98) in resume_menu_list01: 
     next_page = int(new_val_xx)+98 
    elif unicode(int(new_val_xx)+99) in resume_menu_list01: 
     next_page = int(new_val_xx)+99 

此外,在我的列表中每個值之前的u代表(u'4')?

謝謝。

+0

'next_page = max(map(int,resume_menu_list01))'? – falsetru

+1

你有一個unicode字符串的列表,而不是整數。 'u'''表示一個[unicode字符串](http://docs.python.org/2/howto/unicode.html#the-unicode-type)。 –

+0

next_page = max(map(int,resume_menu_list01))將返回列表中最高的數字。如果4是當前編號,我如何編寫循環,我想找到下一個最高編號,在這個例子中是32? – user1261774

回答

1

有三個步驟:

  1. 將您的unicode字符串爲整數。
  2. 查找列表中的最大整數。
  3. 將一個最大值添加到你的下一個最高值。

這裏有三個步驟:

list_of_numbers = map(int, resume_menu_list01) 
# if you are using Python3, list_of_numbers = list(map(int, resume_menu_list01)) 
maximum_number = max(list_of_numbers) 
next_highest = maximum_number + 1 

您可以結合他們都在一個表達式:

next_highest = max(map(int, resume_menu_list01))+1 

next_highest = max(map(int, resume_menu_list01))+1將返回最大 數加一,這不在列表中。如果我有數字4和 我想找到下一個最高數字,即32,我將如何編寫 for循環?

你只是想排序清單所以你可以按順序逐步通過嗎?如果是這樣,sorted_list = sorted(resume_menu_list01, key=int);但要找到在現有列表higest值,使用max

>>> i = [u'4', u'32', u'72', u'100'] 
>>> print(max(map(int, i))) 
100 

現在,如果你想知道什麼是從已知值的下一個最高值:

known_value = u'4' 
def get_highest(value, items): 
    sorted_items = sorted(items, key=int) 
    if sorted_items.index(value) == len(sorted_items) - 1: 
     # The value is the highest item in the list 
     # return the item 
     return value 
    else: 
     return sorted_items[sorted_items.index(value)+1] 

print(get_highest(known_value, [u'4', u'32', u'72', u'100'])) 
+0

next_highest = max(map(int,resume_menu_list01))+ 1將返回最大數加1,它不在列表中。如果我有數字4,我想找到下一個最高數字,即32,我將如何編寫for循環? – user1261774

0
for new_val_xx in range(1,99): 
    if unicode(new_val_xx) in resume_menu_list01: 
     next_page = int(new_val_xx)+new_val_xx 

這是你想要的嗎?否則@Burhan Khalid的答案會更加優化。