【发布时间】:2019-11-07 09:01:55
【问题描述】:
我想在 python 中创建一个函数,该函数将一个具有超过 1 个按数字排序的整数元素的列表作为输入,并返回一个相同整数的列表作为输出,但任何重复都组合在一个自己的列表中,此列表是函数返回的列表中的一个元素。例如:
[3,3,4,4,4,5,6,6] 将返回为[[3,3],[4,4,4],5,[6,6]]
我尝试为每个条件嵌入多个 if 语句,但这变得太混乱、太快了。
def simplify(mylist):
if len(mylist) > 1:
newlist = []
for i in range(0, len(mylist) - 1):
if (mylist[i] == mylist[i + 1]):
count = 2
group = [mylist[i], mylist[i]]
while (i + count) <= (len(mylist) - 1):
if mylist[i] == mylist[i + count]:
group.append(mylist[i])
count += 1
else:
newlist.append(group)
break
else:
newlist.append(mylist[i])
print(newlist)
return (newlist)
所以我希望它执行我描述的函数应该执行的操作,但随后它生成了一个列表,其中重复的元素在列表中重复减少一个元素,直到它完成迭代并且没有附加最后一个值。示例:
输入[3,4,4,4,4,5]
返回[3,[4,4,4,4],[4,4,4],[4,4],4]
【问题讨论】:
-
是否需要不使用python内置方法编写函数?你可以用 counter 轻松做到这一点
-
如果您想将
[[3, 3], [4, 4, 4], 5, [6, 6]]作为输出,请查看我的答案。 -
如果输入是
[3, 3, 4, 3, 3]会发生什么
标签: python python-3.x list sorting