目标是:将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']
。我怎样才能把这张单子分开
也许我误解了这个问题
压缩列表,将结果元组连接到单个列表中,然后将其拆分为两半
嗯,根据您共享的最终确定信息,我相信您非常接近解决方案,您只需要拆分最终阵列。你觉得这个怎么样
基本上,将列表拆分为两部分,其中一部分最多比另一部分大
1
个元素,对应于在向下舍入的中点的索引处拆分任意列表。如果原始数组(输入链)的长度为奇数,则这些部分的长度将不同数组的中点索引是
len(array)//2
-len(array)
是全长,//2
是“半舍入除法”的运算最后,为了使用这个中点索引分割数组,我们使用python中的
splicing
机制。语法如下:a[:m]
=从索引0
(=开始)到索引m-1
的a
的所有元素a[m:]
=从索引m
到索引len(a) - 1
(=结尾)的a
的所有元素嘿,试试看,希望是你想要的吗
相关问题 更多 >
编程相关推荐