Text = input('please enter your text')
l = [str(x) for x in Text.split()]
count = 0
for item in l:
for i in range(1,len(item)):
if item[i-1] == item[i]:
count +=1
if count <1:
l.remove(item)
count = 0
print (l)
目标是:如果我们有一个文字:&#39; baaaaah mooh lpo mpoo&#39;获得一个包含2个连续相同字符的元素的列表,在这种情况下[&#39; baaaaah&#39;,&#39; mooh&#39;,&#39; mpoo&#39; ]
该程序正在使用上述示例
如果我使用这个它不起作用:&#39; hgj kio mpoo&#39;
谢谢
答案 0 :(得分:1)
(复杂)单线:
>>> def successive_items(s):
return [x for x in s.split() if any(x[i]==x[i-1] for i in range(1,len(x)))]
>>> successive_items('baaaaah mooh lpo mpoo')
['baaaaah', 'mooh', 'mpoo']
>>> successive_items('hgj kio mpoo')
['mpoo']
如果是您的代码,则不应修改您正在迭代的列表。比方说,让我们有一个数组:
a = [1,2,3,4,5]
现在,如果你迭代并删除元素(在循环内),你会期望a
为空。但是,让我们看看:
>>> a = [1,2,3,4,5]
>>> for item in a:
a.remove(item)
>>> a
[2, 4]
请参阅?它不是空的。这可以更好地解释here。
由于列表修改,您的程序不适用于第二种情况。方法如下:
['hgj','kio','mpoo']
。 hgj
。所以列表现在变为['kio','mpoo']
。 mpoo
(在修改后的列表中); kio
从未被阅读。答案 1 :(得分:0)
这可能会有所帮助:
sentence = input("please enter your text")
words = sentence.split()
answers = []
for each_word in words:
for idx in range(1, len(each_word)):
if each_word[idx] == each_word[idx-1]:
answers.append(each_word)
break
print(answers)
在您的代码中,您正在迭代列表,同时修改相同的列表(通过删除其中的元素),有关更多说明,请参阅this answer