2024-09-30 10:29:40 发布
网友
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的模式,但是它只抛出了超出范围的索引错误。在
谢谢
对于x的最后一个值,lst[x+1]x+1超出范围。while循环应该是while x < len(lst) -1。在
lst[x+1]
while x < len(lst) -1
作为补充说明,要计算模式,您可以简单地做:max(set(lst), key=lst.count),如图here。在
max(set(lst), key=lst.count)
逻辑不正确。在
首先,指数超出范围的原因是因为直线
if lst[x] == lst[x+1]
x在整个循环中正确递增,但是当x位于最后一个索引时,+1位访问不在列表中的索引(例如,大小为5的列表的索引5)。在
x
+1
此外,您在循环中实际执行的操作似乎不会使您接近模式的值。模式是列表中出现最多的元素。解决这个问题的一种方法是使用字典(dict()),其中“keys”是列表中的元素,“values”是每个元素出现的次数。在
dict()
试试这样的方法:
这也许不是最“Python式”的解决方案,尽管它是一个直觉的分解逻辑,涉及到寻找模式,至少好像你要做的手在纸上。在
对于x的最后一个值,
lst[x+1]
x+1超出范围。while循环应该是while x < len(lst) -1
。在作为补充说明,要计算模式,您可以简单地做:
max(set(lst), key=lst.count)
,如图here。在逻辑不正确。在
首先,指数超出范围的原因是因为直线
x
在整个循环中正确递增,但是当x
位于最后一个索引时,+1
位访问不在列表中的索引(例如,大小为5的列表的索引5)。在此外,您在循环中实际执行的操作似乎不会使您接近模式的值。模式是列表中出现最多的元素。解决这个问题的一种方法是使用字典(
dict()
),其中“keys”是列表中的元素,“values”是每个元素出现的次数。在试试这样的方法:
^{pr2}$这也许不是最“Python式”的解决方案,尽管它是一个直觉的分解逻辑,涉及到寻找模式,至少好像你要做的手在纸上。在
相关问题 更多 >
编程相关推荐