程序在 break 语句后继续执行循环
Program continues through the loop after a break statement
我是 python 的新手,我遇到了一些练习题。问题是:
#Given an array, return the first recurring character
#Example1 : array = [2,1,4,2,6,5,1,4]
#It should return 2
#Example 2 : array = [2,6,4,6,1,3,8,1,2]
#It should return 6
lsts = [2,5,1,2,3,5,1,2,4]
def findDouble(arrs):
repeats = dict()
for arr in arrs:
repeats[arr] = repeats.get(arr, 0) + 1
if repeats[arr] == 2: break
print(arr)
findDouble(lsts)
#0(n)
我的理解是,在“中断”之后它应该结束循环,所以我应该只得到 2。相反,它经历了整个过程,我得到了 2、5 和 1。我没有得到什么?
在赋值repeats[arr] = ...
之后直接加上print(repeats)
可能会更容易理解
迭代 1:arr == 2
{2: 1} # key `2` was created and assigned `0 + 1`
迭代 2:arr == 5
{2: 1, 5: 1} # key `5` created and assigned `0 + 1`
迭代 3:arr == 1
{2: 1, 5: 1, 1: 1} # key `1` created and assigned `0 + 1`
迭代 4:arr == 2
{2: 2, 5: 1, 1: 1} # key `2` was already present, assigned `1 + 1`
repeat[arr] == 2: # evaluates to True, so it breaks
第一次循环,arrs
是2,那个键在字典中还不存在,所以repeats[2]
被创建,值为1,程序打印2
.
第二次循环,arrs
是5。那个键在字典中还不存在,所以repeats[5]
被创建,值为1,程序打印5
.
第三次循环,arrs
为1。字典中还不存在那个键,所以repeats[1]
被创建,值为1,程序打印1
.
第四次循环,arrs
为2,字典中已经存在该key值为1,所以repeats[2]
被赋予新值2,循环休息。
我是 python 的新手,我遇到了一些练习题。问题是:
#Given an array, return the first recurring character
#Example1 : array = [2,1,4,2,6,5,1,4]
#It should return 2
#Example 2 : array = [2,6,4,6,1,3,8,1,2]
#It should return 6
lsts = [2,5,1,2,3,5,1,2,4]
def findDouble(arrs):
repeats = dict()
for arr in arrs:
repeats[arr] = repeats.get(arr, 0) + 1
if repeats[arr] == 2: break
print(arr)
findDouble(lsts)
#0(n)
我的理解是,在“中断”之后它应该结束循环,所以我应该只得到 2。相反,它经历了整个过程,我得到了 2、5 和 1。我没有得到什么?
在赋值repeats[arr] = ...
print(repeats)
可能会更容易理解
迭代 1:arr == 2
{2: 1} # key `2` was created and assigned `0 + 1`
迭代 2:arr == 5
{2: 1, 5: 1} # key `5` created and assigned `0 + 1`
迭代 3:arr == 1
{2: 1, 5: 1, 1: 1} # key `1` created and assigned `0 + 1`
迭代 4:arr == 2
{2: 2, 5: 1, 1: 1} # key `2` was already present, assigned `1 + 1`
repeat[arr] == 2: # evaluates to True, so it breaks
第一次循环,arrs
是2,那个键在字典中还不存在,所以repeats[2]
被创建,值为1,程序打印2
.
第二次循环,arrs
是5。那个键在字典中还不存在,所以repeats[5]
被创建,值为1,程序打印5
.
第三次循环,arrs
为1。字典中还不存在那个键,所以repeats[1]
被创建,值为1,程序打印1
.
第四次循环,arrs
为2,字典中已经存在该key值为1,所以repeats[2]
被赋予新值2,循环休息。