[英]How to loop through a list using each item from a list only once to insert at the beginning of another list in Python?
我是Python的新手,在完成任務的任務時遇到了麻煩。 我已經定義了一個除了以下區域之外運行良好的函數:我正在處理10個字符串的列表,我需要將此列表中的每個字符串僅插入到相應的10個字符串的隨機列表的開頭。使用sys.argv
從終端中取出文件(意味着有10個文件,我的列表中有一個字符串對應每個文件)。 我知道我必須使用.insert(0, new_string)
方法從我的10個字符串列表中插入新字符串。
這是我的功能的摘錄,顯示了我迄今為止嘗試實現的目的:
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
的開頭。 我正在使用的每個文件都有一個randomlist
,我通過sys.argv
調用它們我相信它會涉及某種類型的for循環和可能的元組,但我不知道如何讓它們做我做的事情需要他們這樣做。 此外,我不允許硬編碼任何東西。
在您的代碼中,您將新元素插入到相同且唯一的列表randomlist
列表中,這就是為什么它們最終堆積在一起的原因。
您可以在randomlist
的開頭(副本)添加元素item
(不影響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
嘗試這個,
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.