如何让下面的代码更简洁高效。
这里的代码是找到某个数值在列表中的位置。 例如,给定一组数字
ListNo = [[100,2,5], [50,10], 4, 1, [6,6,500]]
100、50、500的值分别在0、3、9的位置。
测试代码如下
ListNo = [[100,2,5], [50,10], 4, 1, [6,6,500]]
NumberedList = ListNo
Const = 0
items = 0
for i, item in enumerate(ListNo):
MaxRange = len(item) if isinstance(item, list) else 1
for x in range(0, MaxRange):
if MaxRange > 1:
NumberedList[i][x] = Const
else:
NumberedList[i] = Const
Const = Const + 1
print(NumberedList)
[[0, 1, 2], [3, 4], 5, 6, [7, 8, 9]]
我的问题是,是否有另一种选择可以使这段代码更加紧凑和高效。
最佳答案
你可以使用itertools.count
:
from itertools import count
i = count()
print([[next(i) for _ in range(len(l))] if isinstance(l, list) else next(i) for l in ListNo])
这个输出:
[[0, 1, 2], [3, 4], 5, 6, [7, 8, 9]]
关于python - 如何在 python Class-list 中有效地制作一个编号列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716448/