在处理新列表之前迭代多个列表以删除元素的Pythonic方法

时间:2018-02-27 23:56:44

标签: python

我有一个列表类,其中显示的值代表图表中的节点。

List x= [5, 1, 2, 4]
        [5, 1, 2, 4]
        [5, 1, 2, 4]
        [5, 1, 2, 4]

如何从第一个列表中删除第一个元素,从第三个列表中删除第二个列表中的第二个元素等,然后使用剩余的每个列表来绘制图形。即我会得到4个不同的情节。我希望得到:

NewList x= [1, 2, 4]
           [5, 2, 4]
           [5, 1, 4]
           [5, 1, 2]

这是我的代码的开头。

tG = G.copy()
orderToRemoveNodes = 5,1,2,4
myNodes = 1, 2, 4 ,5
    for n in mynodes:
        e = removedNode
        setRemoved = [list(x) for x in set(map(frozenset, e))]
        res = list(map(int, orderToRemoveNodes))
        for i in res:
            if i == n:
                tG.remove_node(i)
                tG.add_edges_from(setRemoved)
                nx.draw(tG)
                plt.show()

这是print(type(res))

的输出
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>

要真诚,我不知道该怎么办。我需要的唯一部分是如何为每个后续列表一个接一个地迭代列表。谢谢

1 个答案:

答案 0 :(得分:2)

如果你有

big_list = [[5, 1, 2, 4],
            [5, 1, 2, 4],
            [5, 1, 2, 4],
            [5, 1, 2, 4]]

并且要删除第0个列表的第0个索引,第1个第1个,第2个第2个,依此类推......

[[el for i, el in enumerate(sublst) if i != j] for j, sublst in enumerate(big_list)]

这将给出:

result = [[   1, 2, 4],
          [5,    2, 4],
          [5, 1,    4],
          [5, 1, 2   ]]