Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将一个列表均匀地散布到另一个列表中?_Python_List - Fatal编程技术网

Python 如何将一个列表均匀地散布到另一个列表中?

Python 如何将一个列表均匀地散布到另一个列表中?,python,list,Python,List,我想以相等的间隔将一个较短的列表插入一个较长的列表。例如,给定 现有清单 主列表=['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6'] 要插入到主列表的辅助列表 辅助列表=['ax1'、'ax2'、'ax3'] 我希望输出是 期望输出列表 新列表=['lst1'、'lst2'、'ax1'、'lst3'、'lst4'、'ax2'、'lst5'、'lst6'、'ax3'] 我试过了 新列表=[i[:2]+k代表i,k在zipmain\u列表、aux\u列表中] 但这

我想以相等的间隔将一个较短的列表插入一个较长的列表。例如,给定

现有清单 主列表=['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6'] 要插入到主列表的辅助列表 辅助列表=['ax1'、'ax2'、'ax3'] 我希望输出是

期望输出列表 新列表=['lst1'、'lst2'、'ax1'、'lst3'、'lst4'、'ax2'、'lst5'、'lst6'、'ax3'] 我试过了

新列表=[i[:2]+k代表i,k在zipmain\u列表、aux\u列表中]
但这并没有产生预期的产出。为清晰起见进行了编辑

以@U10 Forward的答案为基础,对其进行概括:

skip = len(main_list) // len(aux_list)
main_sub_lists = [main_list[i:i+skip] for i in range(0, len(main_list), skip)]
desired = sum([a_l + [b] for a_l, b in zip(main_sub_lists, aux_list)], [])

基于@U10 Forward的答案并对其进行概括:

skip = len(main_list) // len(aux_list)
main_sub_lists = [main_list[i:i+skip] for i in range(0, len(main_list), skip)]
desired = sum([a_l + [b] for a_l, b in zip(main_sub_lists, aux_list)], [])
尝试将sum与zip一起使用:

输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
如果希望结果为列表,请使用:

print(list(sum(zip(main_list[::2], main_list[1::2], aux_list), ())))
输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
编辑:

如果希望它适用于所有不同的长度,请使用此选项:

print(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ()))
输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
同样,如果希望结果是一个列表,请使用:

print(list(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ())))
尝试将sum与zip一起使用:

输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
如果希望结果为列表,请使用:

print(list(sum(zip(main_list[::2], main_list[1::2], aux_list), ())))
输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
编辑:

如果希望它适用于所有不同的长度,请使用此选项:

print(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ()))
输出:

('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3')
['lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3']
('lst1', 'lst2', 'ax1', 'lst3', 'lst4', 'ax2', 'lst5', 'lst6', 'ax3', 'lst7', 'lst8', 'ax4')
同样,如果希望结果是一个列表,请使用:

print(list(sum(zip(*[main_list[i::len(main_list) // len(aux_list)] for i in range(len(main_list) // len(aux_list))], aux_list), ())))

这可能更容易遵循,并且可以使用不同的列表大小进行缩放:

主列表=['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6'] 辅助列表=['ax1'、'ax2'、'ax3'] 在主列表中获取细分大小 m=lenmain\u列表//lenaux\u列表 创建块中的列表列表 z=[main_list[m*i:m*i+1]+[aux]for i,aux-in-aux_list] 压平 z=[k代表秒,z代表k代表秒] Z ['lst1','lst2','ax1','lst3','lst4','ax2','lst5','lst6','ax3']
注意:如果您的列表大小不可分割,这将产生意外的输出和/或中断。这可能更容易遵循,并且可以使用不同的列表大小进行缩放:

主列表=['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6'] 辅助列表=['ax1'、'ax2'、'ax3'] 在主列表中获取细分大小 m=lenmain\u列表//lenaux\u列表 创建块中的列表列表 z=[main_list[m*i:m*i+1]+[aux]for i,aux-in-aux_list] 压平 z=[k代表秒,z代表k代表秒] Z ['lst1','lst2','ax1','lst3','lst4','ax2','lst5','lst6','ax3']

注意:如果列表大小不可分割,这将产生意外的输出和/或中断

这只是在最后添加新列表。但我期待的是不同的。哦,对不起,当时我不明白你的问题。请重新表述您的问题,我将对我的答案进行编辑。这只是在最后添加了新的列表。但我期待的是不同的。哦,对不起,当时我不明白你的问题。请重新表述您的问题,我将对我的答案进行编辑。lenmain_列表是否总是lenaux_列表的倍数?@juanpa.arrivillaga是的。它始终是多个。请添加expectoutput@MarcinOrlowski我在我的问题新列表中提到了这一点,因为你应该已经注意到它并不清楚。请编辑您的问题,并清楚地将该列表标记为所需输出的示例。lenmain_列表始终是lenaux_列表的倍数?@juanpa.arrivillaga没错。它始终是多个。请添加expectoutput@MarcinOrlowski我在我的问题新列表中提到了这一点,因为你应该已经注意到它并不清楚。请编辑您的问题并清楚地标记该列表,作为所需输出的示例。如何在主列表长度和辅助列表长度方面编写相同的内容?@大陆编辑的我的,请检查它。如果它有效,请不要忘记接受我这样做。别介意,我有一个简短的问题。如何将['lst1'、'lst3'、'lst5'、'lst2'、'lst4'、'lst6']重新排列为['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6']?我的意思是我实际上有44个元素。@你想对它们进行排序吗?如果是,请使用SortedYourlist,但我的实际列表中有作为元素的名称。没有与之关联的值。所以,排序在这里可能不起作用。如何在主列表长度和辅助列表长度方面写相同的内容?@我的,检查一下,如果行得通,别忘了接受我做的。别介意,我有一个简短的问题。如何将['lst1'、'lst3'、'lst5'、'lst2'、'lst4'、'lst6']重新排列为['lst1'、'lst2'、'lst3'、'lst4'、'lst5'、'lst6']?我的意思是我实际上有44个元素。@你想对它们进行排序吗?如果是,请使用SortedYourlist,但我的实际列表中有作为元素的名称。没有与之关联的值。所以,排序在这里可能不起作用。