gpt4 book ai didi

python - 用列表中的一项替换字符串中的一项

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:59 25 4
gpt4 key购买 nike

我有一个字符串和一个列表:

seq = '01202112'

l = [(0,1,0),(1,1,0)]

我想要一种 pythonic 方式,将每个 '2' 替换为列表 l 中相应索引处的值,以便我获得两个新字符串:

list_seq = [01001110, 01101110]

通过使用 .replace(),我可以遍历 l,但我想知道是否有更 pythonic 的方法来获取 list_seq

最佳答案

我可能会这样做:

out = [''.join(c if c != '2' else str(next(f, c)) for c in seq) for f in map(iter, l)]

基本思想是我们调用iterl中的元组变成迭代器。那时,每次我们对它们调用 next 时,我们都会得到我们需要使用的下一个元素,而不是 '2'

如果这太紧凑,逻辑可能更容易作为函数阅读:

def replace(seq, to_replace, fill):
fill = iter(fill)
for element in seq:
if element != to_replace:
yield element
else:
yield next(fill, element)

给予

In [32]: list(replace([1,2,3,2,2,3,1,2,4,2], to_replace=2, fill="apple"))
Out[32]: [1, 'a', 3, 'p', 'p', 3, 1, 'l', 4, 'e']

感谢@DanD 在评论中指出我一直认为我总是有足够的字符来填充!如果我们用完了,我们会按照他的建议保留原始字符,但是修改这种方法以使其表现不同是很简单的,留给读者作为练习。 :-)

关于python - 用列表中的一项替换字符串中的一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079725/

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