你如何获得循环之外的列表?

时间:2014-11-19 00:15:50

标签: python python-2.7

我正在处理我的python脚本以从数据库中提取数据。

我想在channel循环之外的变量for index in range获得一些帮助。

当我尝试这个时:

    for row in cur:
        channels = row[0].encode('ascii')
        channelList.append(channels)

    for index in range(0, CHANNELS_PER_PAGE):
        channel = channelList[index]

        print channel
        #get the programs list
        cur.execute('SELECT channel, title, start_date, stop_date FROM 
programs WHERE channel=?', [channel])
        programs = cur.fetchall()
        start_pos = 368    # indent for first program
        for row in programs:
            title = row[1].encode('ascii')

如果我使用上面的代码在for index in range循环中打印频道,我会得到这个:

23:32:03 T:1164  NOTICE: 101 ABC FAMILY
23:32:03 T:1164  NOTICE: 102 CBS
23:32:03 T:1164  NOTICE: 103 CNN USA
23:32:03 T:1164  NOTICE: 105 ESPN USA
23:32:03 T:1164  NOTICE: 106 Fox News
23:32:03 T:1164  NOTICE: 107 Animal Planet
23:32:03 T:1164  NOTICE: 108 USA Network

所以当我尝试这个时:

    for row in cur:
        channels = row[0].encode('ascii')
        channelList.append(channels)

    for index in range(0, CHANNELS_PER_PAGE):
        channel = channelList[index]

    print channel
    #get the programs list
    cur.execute('SELECT channel, title, start_date, stop_date FROM programs 
WHERE channel=?', [channel])
    programs = cur.fetchall()
    start_pos = 368    # indent for first program
    for row in programs:
        title = row[1].encode('ascii')

如果我在循环之外使用print channel,我会得到这个:

23:30:09 T:5828  NOTICE: 108 USA Network

我想将循环for row in programs:置于for index in range循环之外,并使用变量channel来阻止我的代码触发。

如何使用获取频道列表以允许我为for index in range循环之外的每个频道进行打印?

1 个答案:

答案 0 :(得分:0)

在第一个程序中,对于频道列表中的每个频道,您可以打印其名称并从数据库中获取程序。但是,在第二个程序中,您删除了缩进。这会导致您的程序打印并仅从频道列表中获取最后一个频道。

使用您的程序逻辑,您不应该从外部for row in programs删除from index in range,尽管您可以使用一些list comprehensions并完成它。