将列表列表转换为一个大列表python

时间:2016-06-03 19:38:25

标签: python list enumeration

我有一个列表:

list1 = [1  2  1 ... 1  399]

还有一个:

list2 = [5 4  3  4  2 0]

list1包含来自0 to 399的数字,其中包含重复项,其长度为5000list2的长度为400,每个list2元素的索引代表list1中元素的数量,这就是400长度的原因。 我想返回一个长度为5000的列表(与list1相同),并检查每个元素,如果list1的第一个元素是1,我想将list2中的索引1添加到新列表中,在这种情况下是4, 所以新列表应该是

new_list = [ 4 , ...]
所有项目的

等等,直到它出现

我尝试了这个但是没有工作:

labels=labels.tolist()
labels2=labels2.tolist()
new=list()

for i in range(len(labels1)):
     for item,index in enumerate(labels2):

         # print(item)
          if labels1[i] == index :
             # print (str(labels2[i]).index)
              new.append(item)

print(new)

4 个答案:

答案 0 :(得分:3)

您需要根据list1中的值为list1的每个值索引到list2。您可以从for循环中构建它:

new_list = []
for k in list1:
  new_list.append(list2[k]) #lookup the value in list2 at the index given by list1

这更像是用列表理解来表达的:

new_list = [list2[k] for k in list1]

答案 1 :(得分:2)

列表理解。

n_l = [list2[i] for i in list1]

答案 2 :(得分:0)

非常快速有效的解决方案之一就是使用numpy模块:

String response = JOptionPane.showInputDialog(null, "Question", JOptionPane.QUESTION_MESSAGE);

设置:

In [46]: a1[l2]
Out[46]: array([4, 3, 1, 1, 1, 2])

答案 3 :(得分:-1)

从list2项目的索引到项目itedelf构建一个字典,然后将列表1项目传递到字典中:

new_dict={}
for i,v in enumerate(list2):
    new_dict[i]=v

new_list=[]
for i in list1:
    new_list.append(new_dict[i])

print new_list