python - For循环意外结果
问题描述
我试图创建一个函数,该函数将可迭代对象作为参数并返回给定的可迭代对象列表,但没有彼此相邻的值。
例如my_function("1112334512")
会返回["1", "2", "3", "4", "5", "1", "2"]
。
我不希望它删除可迭代对象中的重复值,我希望它删除与其旁边具有相同值的值。(例如"AAABA"
完成的结果是"ABA"
)
def my_function(iterable):
iterable_1 = []
for item in iterable:
iterable_1.append(item)
count = 0
for item in iterable_1:
# Tempoary count = count + 1
if iterable_1[count] == iterable_1[count + 1]:
iterable_1.pop(count)
else:
count += 1
return iterable_1
我的问题是,当我认为这终于做到了时,运行的结果my_function("AAAABBBCCDAABBB")
返回了:['A', 'B', 'C', 'D', 'A', 'A', 'B', 'B', 'B']
,理论上它在 D 之前做了正确的事情,我认为 for 循环结束了。
我的问题是为什么?如果它不是循环那么它是什么?
解决方案
对我来说,你的方法似乎过于复杂。怎么样
def my_function(iterable):
result = []
for e in iterable:
if not result or result[-1] != e:
result.append(e)
return result
推荐阅读
- msal - 使用 MSAL 访问令牌/刷新令牌
- javascript - ExtJS 我可以在同一个组件中使用 IF 语句吗
- java - 在 Eclipse 中更改 if() 和 { 之间的空格
- javascript - 点击时不计入索引
- r - 如何在 r ggplot2 的多面图上将数据的平均值添加为水平线
- python - 如何忽略错误而不是返回 400 Bad Request?- Django Rest Framework
- android - Android工作室,BottomNavigationView
- mysql - 从同一个表创建 MySQL JOIN (parent_title from parent_id)
- python - 使用 Keras 训练句子序列
- windows - 网络用户 $userName /domain