【发布时间】:2021-09-04 12:48:54
【问题描述】:
目标是:将 3 个相同长度的列表变成 2 个列表,长度相差不超过 1,来自不同源列表的元素必须交替,并且不能违反它们的顺序。例如:如果“A”在源列表中排在“B”之前,那么“B”在最终列表中不能排在“A”之前。 所以,我决定写一个函数:
def list_3_2(list1,list2,list3):
#split all lists in one list
a=sum((list(i) for i in zip(list1,list2,list3)),[])
#I want to separate list "a" to two new lists: l1 and l2
l1=[]
l2=[]
#//////
return(l1,l2)
list_3_2(['1','2','3'],['4','5','6'],['7','8','9'])
然后我面临分离的问题。我发现了一些类似的问题,但它们的列表结构不同,例如main_list=['3 5', '1 2', '1 7']。统一后我得到另一个结果:a=['1', '4', '7', '2', '5', '8', '3', '6', '9']。我怎么能把这个列表分开?
【问题讨论】:
-
通过 "来自不同源列表的元素必须交替" 你的意思是在结果列表中,对于任何一对连续的元素,它们来自不同的源列表是真的吗?含义是否也相反(也就是说,我的释义是否与您的相同?)另外,在所有原始列表的并集中,是否没有两个元素是相等的?
-
@CaptainTrojan 所以,回答你的第一个问题:是的,我的意思是在结果列表中,对于任何一对连续元素,它们确实来自不同的源列表。我不明白你的第二个问题。第三个问题:这不是真的。
-
您的预期输出是什么样的?
-
@Ben 我想知道我的解释是否真的等同于你的提议(在我原来的评论中用斜体字),或者只要你的提议是真的,我的解释是真的,而不是相反.我怀疑它们是等价的。另外,如果您声称我的第三个问题的答案不正确,那么问题可能没有解决方案,对吗? (例如,如果原始数组中的所有元素都相等)。
-
@CaptainTrojan 对不起,我在回答你的第三个问题时犯了一个错误。你的第三个问题的答案是正确的。我同意你的释义和命题是等价的
标签: python python-3.x list function