2024-06-01 09:46:45 发布
网友
我有一个整数列表,如下所示:
['#a1', '#a1', '#a5', '#a5', '#b3', '#b3', '#b3', '#b6', '#b6']
我想将其转换为整数列表(从1开始),如下所示:
[1, 1, 2, 2, 3, 3, 3, 4, 4]
字符串的值并不重要。我想将类似的字符串转换成一个整数值(从一开始)
请告诉我您的想法如何在python中实现
我相信你需要itertools.groupby和enumerate
itertools.groupby
enumerate
Ex:
from itertools import groupby data = ['#a1', '#a1', '#a5', '#a5', '#b3', '#b3', '#b3', '#b6', '#b6'] result = [idx for idx, (k, v) in enumerate(groupby(data), 1) for i in v] print(result)
输出:
尽管您可以使用itertools来实现这一点,但这个需求非常简单,您可以轻松地实现它,而无需加载任何额外的模块
itertools
这可能是了解生成器函数的一个很好的练习,因此在迭代时会对其进行惰性评估:
def fun(arr): i = 0 last = {} for a in arr: if a != last: i+= 1 last = a yield i
然后像这样使用它:
result = [*fun(x)] # [1, 1, 2, 2, 3, 3, 3, 4, 4]
我相信你需要
itertools.groupby
和enumerate
Ex:
输出:
尽管您可以使用
itertools
来实现这一点,但这个需求非常简单,您可以轻松地实现它,而无需加载任何额外的模块这可能是了解生成器函数的一个很好的练习,因此在迭代时会对其进行惰性评估:
然后像这样使用它:
相关问题 更多 >
编程相关推荐