gpt4 book ai didi

python - 根据条件连接列表中的元素

转载 作者:行者123 更新时间:2023-12-05 08:37:20 25 4
gpt4 key购买 nike

假设我们有列表

L = ['a', '!b', '!c', 'd', 'e', '!f', 'g', 'h']

如果每个元素以 ! 开头,我们希望将其与前一个元素连接起来。

预期输出:

M = ['a!b!c', 'd', 'e!f', 'g', 'h']

这行得通,但是将列表join 成一个字符串,然后将字符串重新拆分成一个列表可能过于复杂:

M = ''.join(('' if l.startswith('!') else '\n') + l for l in L).splitlines()[1:]
# ['a!b!c', 'd', 'e!f', 'g', 'h']

是否有更简单的方法来根据条件('!' in l)连接列表中的元素?

最佳答案

可能您正在寻找单行代码,但这个不太复杂的循环怎么样?

L = ['a', '!b', '!c', 'd', 'e', '!f', 'g', 'h']
M = []
for x in L:
if x.startswith("!"):
M[-1] += x
else:
M.append(x)
# ['a!b!c', 'd', 'e!f', 'g', 'h']

如果您更喜欢简短而不是可读,您可以使用 pop...

for x in L:
M.append(M.pop() + x if x.startswith("!") else x)

我更多地考虑了一个“聪明的”单行解决方案,使用 reducegroupbytakewhile 或“join-and” -split” 解决方案,就像您拥有的解决方案一样,但如果它们完全有效,它们只会使事情变得更加复杂。我认为这是其中一种情况,如果您想要一个单行代码,您应该只为它定义一个函数。

关于python - 根据条件连接列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65766786/

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