Python 如何引用for循环外部的计数器?

Python 如何引用for循环外部的计数器?,python,Python,我在课堂上遇到了一个问题。电子商务网站在每个页面中包含一到多个项目。为了模仿网站的逻辑,程序员有一个项目列表,每个项目都是字符串数组的形式:[名称、相关性、价格],其中相关性和价格的每个值都是字符串形式的整数。在按(名称:0,相关性:1,价格:2)对项目进行排序后,程序员试图找出所选页面中显示的项目列表。给定项目列表、排序列、排序顺序(0:升序、1:降序)、每页中要显示的项目数和页码。确定指定页面中的项目名称列表,同时遵守项目顺序(页码从0开始)。示例项=[[item1,10,15],[item

我在课堂上遇到了一个问题。电子商务网站在每个页面中包含一到多个项目。为了模仿网站的逻辑,程序员有一个项目列表,每个项目都是字符串数组的形式:[名称、相关性、价格],其中相关性和价格的每个值都是字符串形式的整数。在按(名称:0,相关性:1,价格:2)对项目进行排序后,程序员试图找出所选页面中显示的项目列表。给定项目列表、排序列、排序顺序(0:升序、1:降序)、每页中要显示的项目数和页码。确定指定页面中的项目名称列表,同时遵守项目顺序(页码从0开始)。示例项=[[item1,10,15],[item2,3,4],[item3,17,8]]sortParameter=1 sortOrder=0 itemsPerPage=2 pageNumber=1共有n=3项。•按(相关性:1)升序排序(项=[[item2,3,4],[item1,10,15]。[item3,17,8]]。每页最多显示2项。•页面O包含2项名称[item2,item1]和第1页仅包含1个项目名称,结果=item3。函数描述完成函数fetchitemsToDisplay在下面的编辑器中显示。fetchltemsToDisplay具有以下参数:字符串项[n][3]:格式为(名称、相关性、价格)的字符串数组的二维数组int-sortParameter:要在int-sortOrder上排序的项目列:0=升序和1=降序int-itemsPerPage:每页的项目数int-pageNumber:显示项目名称的页码返回:string pageltems[m]:按显示顺序在请求页面上的项目名称数组 返回:string pageltems[m]:请求页面上按显示顺序排列的项目名称数组

现在,我已经完成了排序部分,并且大多数测试用例都通过了,但是正如您在我得到的输出中所看到的,页码似乎重复了。我尝试了许多方法,但我似乎不知道如何管理计数?我想我需要对这一点有一个新的看法

def fetchitemstoDisplay(stringitems,sortparameter,sortorder,itemsperpage,pagenumber):
  p=sortparameter
  if sortorder==0:
    so=False
  else:
    so=True
  try:
    a=(sorted(stringitems, key = lambda x: int(x[p]),reverse=so))
  except ValueError:
    a=(sorted(stringitems, key = lambda x: x[0],reverse=False))
  tn=[]
  pn=0
  m=0
  for i in range(len(a)):
    if m<=itemsperpage-1:
      tn.append([pn,a[i][0]])
      m+=1
    elif m>itemsperpage-1 and itemsperpage==1:
      m=0
      pn+=1
      tn.append([pn,a[i][0]])
      pn+=1
    elif m>itemsperpage-1:
      m=0
      pn+=1
      tn.append([pn,a[i][0]])
  print(tn )
  for i in tn:
    if(i[0])==pagenumber:
      print(i[1])
    else:
      pass


您可以通过枚举列表并对索引进行楼层划分来获取页面。如果您希望每页有2个项目,请将索引
(0//2,1//2,2//2,3//2,…)
变为
(0,0,1,1等)
,然后您可以从那里构建退货列表

>>> def get_pages(data_list, items_per_page):
...     return [[i//items_per_page, data[0]] for i, data in enumerate(data_list)]
... 
>>> 
>>> a=[['p1', '1', '2'], ['p2', '2', '1'], ['p3', '2', '1'], ['p5', '2', '1'], ['p6', '2', '1'], ['p6', '2', '1']]
>>> 
>>> print(get_pages(a,2))
[[0, 'p1'], [0, 'p2'], [1, 'p3'], [1, 'p5'], [2, 'p6'], [2, 'p6']]

如果您将描述和代码缩小到您想要解决的问题,那么您可能会非常幸运。如果这是关于循环中的计数器,那么您可能只需要半打行。我们想知道什么是“循环外”意思-是在循环之后吗?在你调用的不同函数中?一个不同的线程?到目前为止,我们有一个似乎是战争与和平的第一章要处理。对不起,关于这一点。我是新来的。我只是提供了整件事,以便有一个更好的上下文。让我试着简化它。我会编辑这个问题。听起来不错。这是一个很好的实践一般来说,调试,特别是在python中,实验非常简单。这有意义吗?假设你有一个列表,
a=['p1','1','2','1'],['p2','2','1'],['p5','2','1'],['p6','2','1'],['p6','2','1']]
。现在有一个名为itemsperpage的参数,假设它等于2。因此,现在的任务是创建一个新列表,如下所示。
n=[[0,'p1'],[0,'p2],[1,'p3'],[1,'p5'],[2,'p6]]
。此新列表的第一个元素将取决于参数itemsperpage。是的,这是有意义的。我可以对此提出一个答案。好的。当每页的项目数为2时,这似乎起作用。这是我在每页传递项目数时得到的结果,即3``[[0',p1'],[0',p2'],[1',p3'],[1',p5'],[2',p6'],[2',p6']
。预期的o/p应该是
[[0',p1'],[0',p2'],[0',p3'],[1',p5'],[1',p6'],[1',p6']``看起来我没有使用传递的参数。已修复。
[[0, 'p1'], [0, 'p2'], [1, 'p3'], [1, 'p5'], [1, 'p6'], [2, 'p6']]
>>> def get_pages(data_list, items_per_page):
...     return [[i//items_per_page, data[0]] for i, data in enumerate(data_list)]
... 
>>> 
>>> a=[['p1', '1', '2'], ['p2', '2', '1'], ['p3', '2', '1'], ['p5', '2', '1'], ['p6', '2', '1'], ['p6', '2', '1']]
>>> 
>>> print(get_pages(a,2))
[[0, 'p1'], [0, 'p2'], [1, 'p3'], [1, 'p5'], [2, 'p6'], [2, 'p6']]