为什么这个用于查找函数模式的Python代码不起作用?

2024-09-30 10:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

lst = [3, 4, 3, 5, 3]

def lstmaker(lst):
   lst1 = []
   x = 0
   while x < len(lst): 
        if lst[x] == lst[x+1]:
            lst1.append(lst[x])
        else:
            pass
        x+=1
   print lst1
lstmaker(lst)

我试图用这个简单的程序来查找list的模式,但是它只抛出了超出范围的索引错误。在

谢谢


Tags: 程序lenifdef模式passelselist
2条回答

对于x的最后一个值,lst[x+1]x+1超出范围。while循环应该是while x < len(lst) -1。在

作为补充说明,要计算模式,您可以简单地做:max(set(lst), key=lst.count),如图here。在

逻辑不正确。在

首先,指数超出范围的原因是因为直线

if lst[x] == lst[x+1]

x在整个循环中正确递增,但是当x位于最后一个索引时,+1位访问不在列表中的索引(例如,大小为5的列表的索引5)。在

此外,您在循环中实际执行的操作似乎不会使您接近模式的值。模式是列表中出现最多的元素。解决这个问题的一种方法是使用字典(dict()),其中“keys”是列表中的元素,“values”是每个元素出现的次数。在

试试这样的方法:

^{pr2}$

这也许不是最“Python式”的解决方案,尽管它是一个直觉的分解逻辑,涉及到寻找模式,至少好像你要做的手在纸上。在

相关问题 更多 >

    热门问题