我有一个列表:
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
它没有输出我想要的列表。我该怎么做?
答案 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"
}
]
}
]
}