Skip to main content
 首页 » 编程设计

python之如何在 python Class-list 中有效地制作一个编号列表

2025年05月04日1398°冷暖

如何让下面的代码更简洁高效。

这里的代码是找到某个数值在列表中的位置。 例如,给定一组数字

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