替换python中重复项列表中的一个特定重复项
Posted
技术标签:
【中文标题】替换python中重复项列表中的一个特定重复项【英文标题】:Replacing ONE specific duplicate in list of duplicates in python 【发布时间】:2017-01-25 21:35:49 【问题描述】:我有一个单词列表,其中一些是重复的。
L = [['I'], ['like'], ['candy'], ['end'], ['do'], ['you'], ['end'], ['okay'], ['end']]
我要做的是缩短列表,使其在第一个 ['end'] 之后结束。我试图找到第二个 ['end'] 的索引并将其替换为另一个单词,然后告诉程序只打印出该列表直到该单词的索引。
所以输出应该是:
L = [['I'], ['like'], ['candy'], ['end'], ['do'], ['you'], ['new_word']]
如何更改这些重复的单词之一?我已经尝试过str.replace()
方法并使用其索引引用特定的重复项,但这会更改所有重复项。我该怎么办?这是我在python中的第一个主要项目,所以我是初学者。
【问题讨论】:
为什么['okay']
会从您的最终列表中消失?
也许从 python 教程的list
部分开始? (不想轻视,但您似乎陷入了非常基本的操作,而 SO 并不最适合这类问题。)
我不介意用漂亮的 oneliners 回答简单的问题并从中获得大量的支持,但这里只是不清楚。
【参考方案1】:
def see_two_end(l, stop_word, new_word):
count = 0
for sublist in l:
if sublist[0] == stop_word:
count += 1
if count > 1:
break
yield sublist
yield [new_word]
l = [['I'], ['like'], ['candy'], ['end'], ['do'], ['you'], ['end'], ['okay'], ['end']]
newlist = list(see_two_end(l, 'end', 'new_word'))
#[['I'], ['like'], ['candy'], ['end'], ['do'], ['you'], ['new_word']]
如果您愿意,您可以轻松地将 see_two_end
设为返回列表列表而不是生成器的函数。
【讨论】:
以上是关于替换python中重复项列表中的一个特定重复项的主要内容,如果未能解决你的问题,请参考以下文章