gpt4 book ai didi

python - 在不使用临时列表的情况下插入列表中元素的频率

转载 作者:行者123 更新时间:2023-12-02 18:24:51 25 4
gpt4 key购买 nike

输入:['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'd', 'a']

输出:['a', 'a', 2, 'b', 'b', 'b', 'b', 4, 'c', 'c', 2, 'd' , 1, 'a',1]

在 python 中不使用临时列表来获取上述输出的最佳方法是什么?我正在尝试使用 while 循环,但随着循环终止,最后一个元素的频率被错过。

l = ['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'd', 'a']

i = 0
idx = 0
length = len(l)
while i < length:
if l[i - 1] != l[i]:
l.insert(i, (i - idx))
length += 1
idx = i + 1
i += 2
else:
i += 1

print(l)

最佳答案

原始代码有一个严重的错误:由于第一次迭代中 i=0,条件是检查列表的第一个和最后一个项目是否匹配,我认为这不是预期的。

这是更正后的代码。

l = ['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'd', 'a']

i = 0 # dynamic index
n = 1 # length of sequence
length = len(l)
while i < length:
if i == length-1 or l[i] != l[i+1]:
l.insert(i+1, n)
length += 1
n = 1
i += 2
else:
n += 1
i += 1

print(l)

相反,我正在与后续项目进行比较。对于最后一项来说,这当然会出现问题,但这种情况首先通过检查 i == length-1 来捕获。

关于python - 在不使用临时列表的情况下插入列表中元素的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70365392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com