簡體   English   中英

Python 3.6 中循環的相同重復輸出

[英]Same repeated output for loop in Python 3.6

我正在從 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)之后p1.append(page)嘗試使用 pp 塊

同樣的事情正在發生:輸出是正確的,但它在循環中運行了多次,這使得它效率低下。

正確的輸出是

輸出

我做錯了什么? 為什么循環會多 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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM