如何用其序号替换列表中的值?

时间:2019-01-09 08:56:10

标签: python python-3.x for-loop replace

我有一个列表:

a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]

我想将内部列表中的所有值替换为它们的顺序值,例如:

b = [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

我尝试过:

for jj in a:
    for uu in range(0, len(jj)):
        for k,q in enumerate(a):
            jj[uu] == k

它没有输出我想要的列表。我该怎么做?

4 个答案:

答案 0 :(得分:4)

这是您想要的输出吗?

In [1]: a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]

In [2]: b = [[idx] * len(sublist) for idx, sublist in enumerate(a)]

In [3]: b
Out[3]: [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

与使用range(len(a))的版本相比,此答案也更像Python。

答案 1 :(得分:2)

这可能会有所帮助。

[[i]*len(a[i]) for i in range(len(a))]

输出:

[[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

答案 2 :(得分:1)

其他答案很好,这是另一种也可以理解的列表理解:

>>> a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]
>>> b = [[i for _ in y] for i, y in enumerate(a)]
>>> b
[[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

答案 3 :(得分:0)

让我们使用列表推导来解决这个问题-

{ 
  "Student": [
    {  
      "name":"5",
      "Roll No":12345,
      "Subjects":[  
        {  
           "subjectCode":"Mat"
        },
        {  
           "subjectCode":"Sci"
        }
      ]
    } 
  ]
}