【问题标题】:Fill a list in python with values from a smaller list by indexes contained in another list with the same size?通过包含在另一个具有相同大小的列表中的索引,用较小列表中的值填充python中的列表?
【发布时间】:2015-09-13 21:58:49
【问题描述】:

我有一个名为 g_index 的充满索引的列表,我有另一个相同大小的列表,名为 fill_list,充满了值。我还有另一个列表 P1,它比 g_index 和 fill_list 长。我想创建一个新的大小列表 P1,它在 g_index 的索引中具有 fill_list 的值,因此其余的值为 None。请注意,fill_list 中的项目将按顺序填充 g index 中的索引。这意味着 fill_list 的第一项将在新列表的索引 3 上(我在代码中将其称为 finaList)等等。创建的列表的大小应该是 P1 的大小,索引中的 fill_list 的值由 g_index 表示。 这是我所拥有的:

g_index=[3,6,2,83,7,100,5,1]
fill_list=["lk",3,6,9,"gh",4,7,34]
finalList=[]
for index in range(len(P1)):
   for j in range(len(g_index)):
      if index== g_index[j]:
         finalList.append(fill_list)
print finalist

在我的代码中,最终列表只是不断地为自己附加值,这不是我想要的。

【问题讨论】:

    标签: python list nonetype


    【解决方案1】:

    您可以使用 None (或其他任何内容)创建一个列表,然后像这样映射值:

    g_index=[3,6,2,83,7,100,5,1]
    fill_list=["lk",3,6,9,"gh",4,7,34]
    p1 = [None] * (max(g_index) + 1)
    for k, v in enumerate(g_index):
        p1[v] = fill_list[k]
    print(p1)
    

    【讨论】:

      【解决方案2】:

      这样的事情怎么样:

      final_list = []
      
      for i in range(len(P1)):
          if i in g_index:
              final_list.append(fill_list)
          else:
              final_list.append(None)
      

      在上面的示例中,whatever 可以是整个 final_list,也可以是 fill_list 中的一个项目。

      【讨论】:

      • 我不能这样做,因为我附加到最终列表的值来自小于 P1,所以我得到一个索引超出范围错误。
      • 在您的示例中,是列表还是单个项目?应该是 fill_List[i]。如果我这样做,那就是索引超出范围错误。
      • 没关系,随便你。您可以附加整个列表或仅附加一个项目
      • 如果你想要它可以是fill_list(整个列表)......我认为这就是你在示例中的方式
      猜你喜欢
      • 2020-05-23
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      相关资源
      最近更新 更多