gpt4 book ai didi

python - 在python中“聚集”一个列表

转载 作者:行者123 更新时间:2023-12-01 08:46:59 28 4
gpt4 key购买 nike

我一直在尝试“组合”一个列表

I mean putting items together depending on the item inbetween, so ['d','-','g','p','q','-','a','v','i'] becomes ['d-g','p','q-a','v','i'] when 'clumped' around any '-'

这是我的尝试:

def clump(List):
box = []
for item in List:
try:
if List[List.index(item) + 1] == "-":
box.append("".join(List[List.index(item):List.index(item)+3]))
else:
box.append(item)

except:
pass

return box

但是,它输出(对于上面的示例)

['d-g', '-', 'g', 'p', 'q-a', '-', 'a', 'v']

因为我不知道如何跳过接下来的两项

另外,代码是一团糟,主要是由于try和except语句(我使用它,否则我得到一个IndexError,当它到达最后一项时)

如何修复(或完全重写)?

谢谢

最佳答案

这是一个 O(n) 解决方案,它维护一个标志来确定您当前是否正在结 block 。然后它根据这个条件操作列表中的最后一项:

def clump(arr):
started = False
out = []
for item in arr:
if item == '-':
started = True
out[-1] += item
elif started:
out[-1] += item
started = False
else:
out.append(item)
return out

在行动:

In [53]: clump(x)
Out[53]: ['d-g', 'p', 'q-a', 'v', 'i']

如果列表中的第一项是破折号,则此解决方案将失败,但这似乎应该是无效的输入。

关于python - 在python中“聚集”一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405785/

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