【发布时间】:2021-04-07 23:01:32
【问题描述】:
我试图在 python 上定义一个函数来合并字符串列表中给定索引范围内的字符串。这是我的代码:
def merge_some(L,i,j):
result=L[:]
merging=''
for k in range(i,j+1):
merging +=L[k]
result[i:j+1]=merging
return result
trial= ['a','b','c','d','e','f']
print(merge_some(trial, 1,3)) #index 3 included
输出应该是:
['a','bcd','d','e','f']
代码应该可以正常工作,但是如果我运行它,我只会返回原始列表,这对我来说很奇怪。虽然我知道有很多方法可以计算这样的函数(例如,使用 .join() 方法而不是循环),但我想问一下是否有人知道这种奇怪行为的原因。 任何想法将不胜感激。非常感谢!
【问题讨论】:
-
也许可以使用
print()来查看变量中的内容。 -
我不知道为什么您的切片分配不起作用,但这样做:
result=result[:i]+[merging]+result[j+1:](编辑:这也适用:result[i:j+1]=[merging]) -
实际原因是merging是一个字符串,在切片赋值的时候变成了一个字母列表!所以“bcd”看起来像这样:['b','c','d'] 所以你最终替换了已经存在的东西!!!
标签: python list function merge