2017-02-21 27 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

相关问题