使用非庫python代碼,我如何返回偶數最長序列的索引和計數?Python中偶數的最長序列
a = [1, 3, 2, 6, 4, 1, 2, 2, 2, 8, 1]
應該返回6和4,6是索引,4是計數。 我試過沒有運氣..
def evenSeq(list):
count=0
for i in list:
if list[i]%2 and list[i+1]%2==0:
count+=1
return count
使用非庫python代碼,我如何返回偶數最長序列的索引和計數?Python中偶數的最長序列
a = [1, 3, 2, 6, 4, 1, 2, 2, 2, 8, 1]
應該返回6和4,6是索引,4是計數。 我試過沒有運氣..
def evenSeq(list):
count=0
for i in list:
if list[i]%2 and list[i+1]%2==0:
count+=1
return count
a=[1,3,2,6,4,2,2,2,2,2,1,2,2,2,8,1]
def evenSeq(a):
largest = 0
temp_largest = 0
location = 0
for count, value in enumerate(a):
if value % 2 == 0:
temp_largest += 1
else:
temp_largest = 0
if temp_largest >= largest:
largest = temp_largest
location = count + 1 - temp_largest #plus one cause enumerate returns the index and we are subbing from the current streak which needs to be offset by one
return location, largest
print(evenSeq(a)) #returns 2 8
不是最漂亮的解決方案,但它可以幫助教你這是怎麼回事和解決方案的基本邏輯。基本上,它會檢查數字是否爲偶數,並保持存儲在temp_largest
中的當前連勝數。檢查temp_largest
是否是當時最大的已知條紋,並從枚舉更新索引。
編輯基於評論:
for count, value in enumerate(a):
這條線基本上穿過名單,投入value
和值count
當前索引。 enumerate()
基本上會經歷通過它的任何東西,並返回一個從0開始的計數。例如見下文。
a=[1,3,2,6,4,2,2,2,2,2,1,2,2,2,8,1]
for index, value in enumerate(a):
print('{} index and value is {}'.format(index,value))
打印出:
0 index and value is 1
1 index and value is 3
2 index and value is 2
3 index and value is 6
4 index and value is 4
5 index and value is 2
6 index and value is 2
7 index and value is 2
8 index and value is 2
9 index and value is 2
10 index and value is 1
11 index and value is 2
12 index and value is 2
13 index and value is 2
14 index and value is 8
15 index and value is 1
「計數,枚舉(a)中的值」是做什麼的? –
試試這個例子:'evenSeq([4,4,4,1,2,2,2,2])',它給出了錯誤的答案 –
@FranciscoCouzo oops錯過了一個等號,感謝捕捉會更新。 – MooingRawr
這裏是一個可能的解決方案:
def even_seq(l):
best = (-1, -1)
start_i = 0
count = 0
for i, n in enumerate(l):
if n % 2 == 0:
count += 1
if count > best[1]:
best = (start_i, count)
else:
start_i = i + 1
count = 0
return best
我會嘗試這種方式:
def evenSeq(seq):
i = startindex = maxindex = maxcount = 0
while i < len(seq):
if seq[i]%2==0:
startindex = i
while i < len(seq) and seq[i]%2==0:
i+=1
if maxcount < i - startindex:
maxcount = i - startindex
maxindex = startindex
i+=1
return (maxindex, maxcount)
不起作用,您基於值而不是實際索引編制索引。 – MooingRawr
您正在使用列表中的元素,就像它們是索引一樣。此外,不要影響建立在'列表' –
感謝您的意見,我修正了我的解決方案的名稱。 –
這裏添加一些額外的信息。您的代碼中正在發生什麼不符合您的期望?你目前得到的輸入是什麼,你所提供的輸入不符合期望? – idjaw
觀察:如果你碰到一個奇數,'count'會發生什麼? –
@PatrickHaugh編輯 –