2017-02-21 67 views
1

我是新來的Python和我有麻煩完成任務的分配。我已經定義了行之有效除了以下區域的功能:我與10個字符串列表工作,我只需要一次插入從這個列表中的每個字符串也10字符串對應的隨機列表的開頭,我使用sys.argv從終端被拉斷的文件進行(這意味着有10個文件,從對應於每個文件我的名單一個字符串)。我知道我必須使用.insert(0, new_string)方法從我的10個字符串列表中插入新字符串。如何在列表中循環使用列表中的每個項目一次,以便在Python的另一個列表的開頭插入?

這正顯示出我所到目前爲止已經試過我的函數的摘錄來實現這一目標:

randomlist = (list(map(choice, old_list))) 
new_list = ["string1", "string2", "string3", "string4", "string5", "string6", "string 7", "string8", "string9", "string10"] 
for new_string in new_list: 
    randomlist.insert(0, new_string) 

當我運行這段代碼,我得到其中來自new_list每一個元素插入一個列表的輸出在我的randomlist元素之前。這導致20個元素的列表時,只應11.

輸出應該怎麼樣是這樣的(應用函數到每個使用sys.argv的10個文件後),其中rstring相當於從字符串我randomlist

["string1", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string2", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string3", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string4", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string5", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string6", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string7", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string8", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string9", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
["string10", "rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 

我試過其他的一些東西,但是這是最混亂的方式,我能得到的輸出作爲一個回顧,我需要從左至右一次(使用每一個元素從new_list秩序。 )並將其插入我的randomlist的開頭。沒有爲我用,我叫他們通過sys.argv工作的每一個文件,我相信它會涉及到一些種類的循環,並可能元組randomlist,但我不知道如何讓他們做什麼,我需要他們去做。另外,我不允許硬編碼任何東西。

回答

0

在你的代碼中插入新的元素相同,唯一列表randomlist這就是爲什麼他們都堆積在最後。

您可以在(複印件)開始添加元素itemrandomlist(不影響randomlist本身)是這樣的:

[item] + randomlist 

要一次創建所有的輸出,只是窩此列表中理解:

all_outputs = [[item] + randomlist for item in new_list] 
for output in all_outputs: 
    print output 

,或者如果你只需要打印出來,你可以這樣做:

for item in new_list: 
    print [item] + randomlist 
+0

對不起,我不知道我明白的地方我加入你給我就行了。我試着在我的原始問題的代碼的第2行和第3行之間添加該代碼,並且我的輸出只是在生成隨機列表之前沒有插入new_list元素而生成的隨機列表。我也嘗試用你的行替換我的問題代碼的第4行,並得到了相同的結果。 – biocoder

+0

這真的取決於你想要對你的修改列表進行什麼操作。請參閱編輯以將其打印出來。 – Julien

0

試試這個,

import random 

list1 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list2 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list3 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list4 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list5 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list6 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list7 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list8 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list9 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 
list10 = ["rstring1", "rstring2", "rstring3", "rstring4", "rstring5", "rstring6", "rstring7", "rstring8", "rstring9", "rstring10"] 

lists = [list1, list2, list3, list4, list5, list6, list7, list8, list9, list10] 

new_list = ["string1", "string2", "string3", "string4", "string5", "string6", "string7", "string8", "string9", "string10"] 
for new_string in new_list: 
    randomlist = random.choice(lists) #Selects a random list from pool 
    randomlist.insert(0, new_string) 
    lists.remove(randomlist) #Removes list from pool once it has been selected 

print list1 
print list2 
print list3 
print list4 
print list5 
print list6 
print list7 
print list8 
print list9 
print list10 
+0

是否將此代碼添加到我上面的代碼所屬的現有函數中?或者是單獨的?對不起,我需要在哪裏插入你給我的線。另外,是不是「L1-物品1」一樣「」字符串1" ? – biocoder

+0

這是獨立的。我需要生成隨機列表,因爲我的代碼中沒有'choice'和'old_list'。主要技巧是從循環中選擇隨機列表,然後將其從池中刪除,以便其他項目不會添加到其中。 「l1-item」出現在您想要添加「stringx」元素的隨機列表之一中。 – MJB

+0

我已將「l1-item」更改爲「rstring1」,同樣對於其他項目。 – MJB

相關問題