【问题标题】:Python server pages, tables and listsPython 服务器页面、表格和列表
【发布时间】:2010-03-11 15:50:30
【问题描述】:

我正在使用 MySQL 和 python 服务器页面来显示数据库中的数据。在数据库中,我选择了以下数据:x =[1, 61, 121, 181, 241, 301] 列表和z = (['a','b'],['c','d'],['e','f'],['g','h'],['i','j'],['k','l']) 列表列表,我想将它们放在一个表格中,如下所示:

001   a b
061   c d
121   e f
181   g h
241   i j
301   k l

我是否认为我必须使用两个“for 循环”才能做到这一点?这是我正在使用的:

rows = cur.fetchall()
z=[]
for row in rows:
    z.append(dict[row[1]]) 
x=[]
for i in range(1, len(rows),60):
    x.append(i)
for i in range(0,len(z), 60):
    req.write("<tr><td>%s</td><td>%s</td></tr>" %(str(x[i:i+60]), str(z[i:i+60])))

这就是我要输出的内容:

[1, 61, 121, 181, 241, 301]      a b
                                 c d
                                 e f
                                 g h
                                 i j
                                 k l

任何帮助将不胜感激!

【问题讨论】:

    标签: python python-server-pages


    【解决方案1】:
    for index, (a, b) in zip(x, z):
        print(index, a, b)         # format as appropriate
    

    另外,z 列表的创建可能会得到改进:

    z = [dic[row[1]] for row in rows]         # calling variable dict shadows built-in
    

    x 可以创建为range(1, len(rows), 60)

    【讨论】:

      【解决方案2】:

      您在 x 上执行了两次“60 步”——您正在构建 x 以获得您所看到的列表,已经一次步长 60,然后获取其前 60 个项目(它没有那么多,所以实际上你得到了 所有 个项目)在第二个循环中使用 str(x[i:i+60])

      将第二个循环更改为,例如:

      for i in range(0,len(z), 60):
          req.write("<tr><td>%s</td><td>%s</td></tr>" %(x[i//60], z[i:i+60]))
      

      我还消除了多余的str 调用,因为%s 格式已经在内部完成了。

      【讨论】:

      • z 的切片是什么意思?
      • 好东西!感谢您的所有帮助。
      • @SilentGhost,不确定,因为我当然不知道光标会发生什么!但是查看示例输出,该部分似乎有效,所以我不理会它;-)。
      【解决方案3】:
      #Following code will work in Python 3.x
      
      x =[1, 61, 121, 181, 241, 301]
      z = (['a','b'],['c','d'],['e','f'],['g','h'],['i','j'],['k','l'])
      
      for i in zip(x, z):
          print("{0:03} {1} {2}".format(i[0], i[1][0], i[1][1]))
      

      【讨论】:

        【解决方案4】:
        1. 尝试使用迭代器而不是数组 + 索引。敌人示例使用 xrange 而不是 range 等。使用 2 个游标而不是缓存表中的所有内容可能是有益的(我不知道 MySQL 功能)。

        2. 有一个zip 函数接受两个可迭代 - 就像两个数组。

        示例代码:

        for (xe, ze) in zip (x, z):
            req.write("<tr><td>%s</td><td>%s</td></tr>" % (xe, ' '.join(ze))
        

        【讨论】:

          猜你喜欢
          • 2021-06-14
          • 1970-01-01
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-13
          • 1970-01-01
          相关资源
          最近更新 更多