繁体   English   中英

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

[英]How to replace the value in a list with their ordinal number?

我有一个清单:

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

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

这是您想要的输出吗?

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风格。

可能这会有所帮助。

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

输出:

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

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

>>> 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]]

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

a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]
b = [[i for j in range(len(a[i]))] for i in range(len(a))]
b
    [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM