gpt4 book ai didi

python - 计算切片列表中的连续出现

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:40 24 4
gpt4 key购买 nike

我有一个包含 81 项的列表,如下所示

myList = [A, A, A, A, A, B, A, A, C, A, B, A, A, B, B, A, B, C, A, C, A, A, C, B, A, C, C, B, A, A, B, A, B, B, A, C, B, B, A, B, B, B, B, B, C, B, C, A, B, C, B, B, C, C, C, A, A, C, A, B, C, A, C, C, B, A, C, B, B, C, B, C, C, C, A, C, C, B, C, C, C]

我已经将 myList 切片为每个列表 3 个元素

 for i in range(0,len(myList ),3):
miniList= myList [i:i + 3]

所以 miniList 现在将是

[A,A,A] consecutive Occurrence
[A,A,B]
[A,A,C]
.
.
.
[C,C,C] consecutive Occurrence

然后我写了一个函数叫做

def countOccurrence(miniList):
count = 1
Num_Sequence = 0
for i in range(len(miniList)-1):
if miniList[i] == miniList[i+1]:
count +=1
if(count == 3):
Num_Sequence += 1
print(miniList) #debugging purposes
print(Num_Sequence) #debugging purposes

return Num_Sequence

Num_Sequence 应该返回 3 而不是 1。谁能告诉我我的代码有什么问题吗?

最佳答案

问题是您没有比较第 0 个和第 2 个元素,即您只比较当前检查的下一个元素 - 这意味着永远不会有第三个匹配项。

相反,我建议您尝试这个 - 它完全跳过了循环:

def countOccurrence(miniList):
count = 1
Num_Sequence = 0

if miniList.count(miniList[0]) == 3:
Num_Sequence = 3
return Num_Sequence

return Num_Sequence

此程序所做的是检查 miniList 中的第一个元素是否出现 3 次。由于 miniList 的大小为 3,如果所有元素都相等,则出现 3 的唯一方式,因此使用哪个进行比较并不重要。

我按如下方式运行:

for i in range(0,len(myList ),3):
miniList= myList [i:i + 3]
print countOccurrence(miniList)

并如预期的那样在最后得到了 3。

这是您实际希望 miniList 成为 3 个元素子列表的列表的情况的解决方案:

miniList = [];
for i in range(0,len(myList ),3):
miniList.append(myList [i:i + 3])

这会将每个子列表附加到 miniListcountOccurence 仍然有效。您可以应用相同的 append 逻辑来获取 miniList 的每个元素的计数:

out = [];
for elem in miniList:
out.append(countOccurrence(elem))

关于python - 计算切片列表中的连续出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com