![](/img/trans.png)
[英]python, rank a list of number/string (convert list elements to ordinal value)
[英]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.