Python3.6中循环的相同重复输出

Python3.6中循环的相同重复输出,python,pandas,loops,Python,Pandas,Loops,我正在从8个域中删除7个域的页面。我得到了我想要的输出,但是出于某种原因,相同的输出被生成了7次而不是一次。 简化代码如下: def firstpage(pp): city = [0, 1, 2, 3, 4, 5, 6, 7] p1 = [] pp = pd.DataFrame() for i in city: response = i

我正在从8个域中删除7个域的页面。我得到了我想要的输出,但是出于某种原因,相同的输出被生成了7次而不是一次。 简化代码如下:

    def firstpage(pp):
        city = [0, 1, 2, 3, 4, 5, 6, 7]
        p1 = []
        pp = pd.DataFrame()
        
        for i in city:
            response = i
            
            if response > 0:
                p = ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12', 'a13', 'a14', 'a15', 
    'a16', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23']
                for a in p:
                    page = str(a)
                    page = 'https://www.uno.com/' + str(i) + '/' + page
                    p1.append(page)
            else:
                print("error")
        
        pp = pd.DataFrame(p1)
        pp.columns = ['Links']
        pp.to_csv('Test.csv', sep=',')

        return pp 
    
    AllFirstPages = pd.DataFrame()
    %timeit firstpage(AllFirstPages)

我还尝试了在
p1.append(page)

同样的事情也在发生:输出是正确的,但它在循环中运行了多次,这使得它效率低下

正确的输出是

我做错了什么?为什么循环的次数是原来的6倍,输出相同

我正在考虑将pandas数据帧置于循环之外,但如何在函数中做到这一点


谢谢

我认为您在编写没有输入参数的函数时会感到困惑(您没有在函数中使用“pp”参数作为输入),然后试图将其强制到函数之外。除了一些奇怪的设计选择之外,您的代码工作得很好,如下所示:

def firstpage():
    city = [0, 1, 2, 3, 4, 5, 6, 7]
    p1 = []
    
    for i in city:
        response = i
        
        if response > 0:
            p = ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12', 'a13', 'a14', 'a15', 
            'a16', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23']
            for a in p:
                page = str(a)
                page = 'https://www.uno.com/' + str(i) + '/' + page
                p1.append(page)
        else:
            print("error")
    return p1

print(firstpage())

谢谢你,巴克!是的,你是对的,我把域作为参数传递,但是当我试图简化为代码时,有些东西丢失了。我尝试了一下,它在现实生活中的例子中起作用,虽然我很失望,我没有得到任何优化的时间花费。