Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django-列表中的次高数字_Python_Django_List - Fatal编程技术网

Python django-列表中的次高数字

Python django-列表中的次高数字,python,django,list,Python,Django,List,我的用户可以将其页面访问设置保存为逗号分隔的整数列表。根据用户保存的设置,用户将具有不同的列表值。例如: 用户1:0,1,22,2,3,4,5,26,6,7,23,8,9,25,11,12,10,13,14,27,15,24,16,17,18,19,20,21 用户2:6,22,8 用户3:0,1,2,26,6,7,23,8,25,11,12,10 在my views.py中,我试图编写一个if语句,当给定一个数字时,我可以指定列表中出现的“下一个最高数字”。例如,在下面的代码中,变量“set

我的用户可以将其页面访问设置保存为逗号分隔的整数列表。根据用户保存的设置,用户将具有不同的列表值。例如:

用户1:0,1,22,2,3,4,5,26,6,7,23,8,9,25,11,12,10,13,14,27,15,24,16,17,18,19,20,21

用户2:6,22,8

用户3:0,1,2,26,6,7,23,8,25,11,12,10

在my views.py中,我试图编写一个if语句,当给定一个数字时,我可以指定列表中出现的“下一个最高数字”。例如,在下面的代码中,变量“settings.MENU_DETAIL_VALUE_ACH_DETAILS”等于8

如何编写代码以获取列表中出现的下一个最高数字(8之后)。对于用户1、2和3,次高的数字分别是9、22和10

下面是我对代码的尝试。if条件检查列表中是否有8。然后,第二行代码应将下一个最高的数字分配给变量“next_highest_num_in_list”:

任何帮助都将不胜感激。

给你

>>> u1 = [0,1,22,2,3,4,5,26,6,7,23,8,9,25,11,12,10,13,14,27,15,24,16,17,18,19,20,21]
>>> u2 = 6,22,8
>>> u3 = 0,1,2,26,6,7,23,8,25,11,12,10


>>> def get_next_highest(num, *lists):
    lists = list(map(sorted, lists))
    for l in lists:
        print(l[l.index(num)+1])


>>> get_next_highest(8, u1, u2, u3)
9
22
10
接下来,您的工作是改进功能以处理该特定案例:)


希望这有帮助

对于这样的短列表,您可以只使用list.sort()和list.index()或list.find()

如果您的列表较长,并且经常访问此类信息,我可能会推荐如下内容:因为它有一个foo.succession()运算符,并且比在循环中排序更快


完整披露:我维护红黑树实现。

本着“可读性计数”的精神,这里是我的getNextSettingPage函数。此外,我还添加了一个不包含您正在寻找的神奇数字的用户案例,以完善示例。i、 e.
u4=[2,6,12,22]

def getNextSettingPage(user_settings, previous_page):
   user_settings.sort()
   try:
      new_index = user_settings.index( previous_page )
      return user_settings[new_index + 1]
   except ValueError:
      # not sure what you want to do here
      return previous_page

if __name__ == '__main__':
   u1 = [0,1,22,2,3,4,5,26,6,7,23,8,9,25,11,12,10,13,14,27,15,24,16,17,18,19,20,21]
   u2 = [6,22,8]
   u3 = [0,1,2,26,6,7,23,8,25,11,12,10]
   u4 = [2,6,12,22]

   MENU_DETAIL_VALUE_ACH_DETAILS=8

   next_page = getNextSettingPage(u1, MENU_DETAIL_VALUE_ACH_DETAILS)
   print "Next Page for User 1: %d" % ( next_page )

   next_page = getNextSettingPage(u2, MENU_DETAIL_VALUE_ACH_DETAILS)
   print "Next Page for User 2: %d" % ( next_page )

   next_page = getNextSettingPage(u3, MENU_DETAIL_VALUE_ACH_DETAILS)
   print "Next Page for User 3: %d" % ( next_page )

   next_page = getNextSettingPage(u4, MENU_DETAIL_VALUE_ACH_DETAILS)
   print "Next Page for User 4: %d" % ( next_page )
产出:

Next Page for User 1: 9
Next Page for User 2: 22
Next Page for User 3: 10
Next Page for User 4: 8

谢谢你的回复。我还是django的新手,我一直在努力使这段代码适合我。我不完全理解for循环,“*lists”是什么意思?它与“lists”有什么不同?它的使用是为了让您可以一次输入多个列表。只需尝试传递
*所选菜单列表
。以下代码返回一个错误,说明8不在列表中:def get_selected_resume_menu_条目(用户):list01=列表(映射(已排序,user.get_profile().selected_resume_menu条目)),用于列表01中的l:下一个_resume_页面=(l[l.index((设置。菜单\详细信息\价值\成就\详细信息)+1])返回下一页\简历\页面有什么建议吗?试着打印列表,确保它是你想要的。嗨,杰夫,谢谢你的代码。我的版本几乎可以用了。最后一个问题是,如果列表如下,我如何找到下一个最高的数字:[u'0',u'1',u'2',u'3',u'4',u'5',u'6',u'7',u'8',u'9',u'10',u'11',u'12',u'13',u'14',u'15',u'16',u'17',u'18',u'19',u'20',u'21',u'22',u'23',u'24',u'25',u'26',u'27']
Next Page for User 1: 9
Next Page for User 2: 22
Next Page for User 3: 10
Next Page for User 4: 8