[英]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.