2012-03-02 77 views
0

將函數打印的結果添加到列表中時遇到了一個小問題。情況就是這樣。該函數打印一些結果這樣Python:將元素添加到列表時出現問題

result1 
result2 
result3 

如何將它們添加到列表中,看到他們像mylist=['result1', 'result2', 'result3']?因爲,在我的情況,我有一個工作循環,它計算使用由我編寫的功能每一種情況下(並打印像上面的結果),但使用附加功能,它打印是這樣的:

['result1'], ['result1', 'result2'], ['result1', 'result2', 'result3']. 

中當然,使用最後的結果,['result1', 'result2', 'result3'],對我來說應該是完美的,但是我得到了像上面這樣的三個列表。我只做最後一個清單,那個有三個結果的清單?

好吧,我要把一些代碼放在這裏,以便更具體。我有一個很大的字符串(我不會在這裏寫它,因爲並不重要)。我的功能是從該字符串拆分一些特定的網址。該功能是這樣的:

def fileref(string, file): 
    start=string.find(file) + 28 
    end=string.find('</ref', start) 
    file=string[start:end] 
    return file 

我有這個名單與使用功能參數:

files55_2=['f55_1.jpg', 'f55_2.jpg', 'f55_3.txt', 'f55_4.mp4'] 

然後,一個循環我這樣做:

for i in files55_2: 
    print fileref(string, i) 

它打印我這些網址:

https://myapi.net/file1 
https://myapi.net/file2 
https://myapi.net/file3 
https://myapi.net/file4 

現在我需要一個解決方案,具有所有這些元素,像這樣的列表:

mylist=['https://myapi.net/file1', 'https://myapi.net/file2', 'https://myapi.net/file3', 'https://myapi.net/file4'] 

我希望我現在更具體。無論如何感謝您的答案!

+4

你能舉一個你正在使用的功能的例子嗎?此外,它可能有助於在此添加一些空白;)編輯 - 某人已經在 – 2012-03-02 13:14:24

+5

中輸入空格請顯示您的代碼! – 2012-03-02 13:14:51

+2

您是否在循環打印獲得打印的增量列表讓您感覺有三個列表?或者,你實際上得到三個List對象?代碼請。 – Nishant 2012-03-02 13:16:15

回答

2

將函數追加到列表中,然後在函數外部打印,可能會更好。

>>> def append(): 
... l = [] 
... for i in range(3): 
...  l.append(str(i)) 
... return l 
... 
>>> l = append() 
>>> l 
['0', '1', '2'] 

或者,如果你已經在運行函數之前有名單,你會不會需要歸還。

>>> def append(l): 
... for i in range(3): 
...  l.append(str(i)) 
... 
>>> l = [] 
>>> append(l) 
>>> l 
['0', '1', '2'] 
+0

謝謝你,你的解決方案似乎是我想要的。 – 2012-03-02 17:00:19

+0

另請參閱我的更新回答 – BioGeek 2012-03-02 17:16:17

+0

@BioGeek:我在發佈問題之前嘗試了這一點,它向我展示了列表的相同增量。 – 2012-03-02 17:40:39

5

在你的功能,你正在逐步建立您的清單,每一步之後打印出清單,這樣的事情:

l = [] 
for i in range(1,4): 
    l.append("result {0}".format(i)) 
    print l 

輸出:

['result 1'] 
['result 1', 'result 2'] 
['result 1', 'result 2', 'result 3'] 

你想要做的是打印在完成創建之後將其列出,例如:

l = [] 
for i in range(1,4): 
    l.append("result {0}".format(i)) 
print l 

輸出:

['result 1', 'result 2', 'result 3'] 

編輯:在所提供的代碼,更改這些行:

for i in files55_2: 
    print fileref(string, i) 

到:

mylist = [] 
for i in files55_2: 
    mylist.append(fileref(string, i)) 
print mylist 
+2

'map(「result {}」。format,range(1,4))'should too too ... – Gandaro 2012-03-02 13:22:20

1

在for循環中,您可以使用 「其他」 接近,這之後執行循環已完成:

for ... 
    ... 
else 
    //here you can add your results to list after loop has finished 
相關問題