Python 用for循环替换if-else
我有一个经常变化的动态整数列表,我希望能够找到列表中的下一个最高值。这是我目前列表的输出:Python 用for循环替换if-else,python,list,for-loop,Python,List,For Loop,我有一个经常变化的动态整数列表,我希望能够找到列表中的下一个最高值。这是我目前列表的输出: [u'4', u'32', u'72', u'100'] 我已经写了一个很长的if-else声明,以确认我的想法/方法确实有效。现在我希望能够用for循环替换if-else语句(我认为for循环在这里应该是最好的),但是我在编写for循环时遇到了很多问题 如何用for循环替换下面的if-else语句 if unicode(new_val_xx) in resume_menu_list01: if
[u'4', u'32', u'72', u'100']
我已经写了一个很长的if-else声明,以确认我的想法/方法确实有效。现在我希望能够用for循环替换if-else语句(我认为for循环在这里应该是最好的),但是我在编写for循环时遇到了很多问题
如何用for循环替换下面的if-else语句
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')
谢谢。有三个步骤:
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
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\u highest=max(map(int,resume\u menu\u list01))+1
将返回最大值
数字加1,不在列表中。如果我有数字4和
我想找到下一个最高的数字,32,我该怎么写
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
您是否只想对列表进行排序,以便可以按顺序逐步浏览?如果是这样,sorted\u list=sorted(resume\u menu\u list01,key=int)
;但要在现有列表中查找最大值,请使用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']))
这就是你想要的?否则@Burhan Khalid的答案会更加优化。
next\u page=max(map(int,resume\u menu\u list01))
?您有一个unicode字符串列表,而不是整数。u''
表示一个。下一个页面=max(映射(int,resume\u menu\u list01))将返回列表中的最大数字。如果4是当前的数字,我想找到下一个最高的数字,在本例中是32,那么如何编写循环?下一个最高=最大(映射(int,resume\u menu\u list01))+1将返回最大数字加上一,这不在列表中。如果我有数字4,并且我想找到下一个最高的数字,即32,我将如何编写for循环?