【问题标题】:Python: How to insert into a nestled list via iteration at a variable index position?Python:如何通过迭代在变量索引位置插入嵌套列表?
【发布时间】:2016-04-05 01:32:23
【问题描述】:

我一直在努力解决这个问题,所以希望你能帮助我!所以这就是我所拥有的:

grouped_list = [[["0","1","1","1"]["1","0","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","1"]]]
index_list = [[2,3][][4]]

并且我想在 index_list 中指示的相应索引位置处的 grouped_list 的子列表中插入一个“-”。结果如下:

[[["0","1","-","-","1","1"]["1","0","-","-","1","1"]][["1","1","0","1","1","1"]][["1","1","1","0","-","1"]]]

由于我是 python 新手,这是我可笑的尝试:

for groups in grouped_list:
    for columns in groups:
        [[columns[i:i] = ["-"] for i in index] for index in index_list]

我得到一个语法错误,指向列表理解中的 =,但我认为它不会真正开始工作。我不想手动执行此操作,因为我正在处理相当大的数据集,所以某种迭代会很好!我需要使用 numpy 或 pandas 来做这样的事情吗?这可以通过巧妙地使用拉链来解决吗?非常感谢任何帮助!

【问题讨论】:

    标签: python numpy indexing iteration list-comprehension


    【解决方案1】:

    我想你想要的是

    for k, groups in enumerate(grouped_list):
        for columns in groups:
            for i in sorted(index_list[k], reverse=True):
                columns.insert(i, "-")
    

    在这里,我遍历分组列表并保存索引k 以确定要从 index_list 中使用哪些索引。我使用list.insert 就地修改列表,它将元素插入到位。请注意,这仅在使用从最大到最小的索引时才有效,否则位置会移动。这就是我在循环中使用sorted 的原因。

    【讨论】:

      【解决方案2】:

      遗憾的是,我无法将其设为一个班轮:

      def func(x, il):
          for i in il:
              x.insert(i,'-')
          return x
      s = [[func(l, il) for l in ll] for (ll, il) in zip(grouped_list, index_list)]
      

      【讨论】:

        猜你喜欢
        • 2015-05-21
        • 2011-10-14
        • 1970-01-01
        • 2015-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        相关资源
        最近更新 更多