亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何按順序比較列表中的項目?

如何按順序比較列表中的項目?

慕的地8271018 2021-08-24 19:12:44
我對編碼非常陌生,正在通過一些玩具問題來學習,但遇到了這個問題。(是的,我知道我不會創建好的變量名)。我試圖找到與列表中的下一個數字匹配的所有數字的總和。我讓它按順序查看項目,但當它遇到重復項時似乎被絆倒了。我運行以下代碼來檢查我的進度:code_string = "9511484596541141557316984781494999"list(code_string)for n in code_string:   nextn = code_string[code_string.index(n)+1]   if n == nextn:      print(n)我得到的只是:1111111為什么它在我的列表中跳來跳去,而不是按順序移動到下一個?它與將字符串轉換為列表有關嗎?我想最終用一個更大的列表來做這件事。
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

index返回字符串中數字的第一個索引并對字符串執行O(n)查找。你不想使用那個。


要么用于enumerate產生索引和值(但您必須測試索引是否不是最后一個,否則這個 +1 將使您的程序崩潰)或zip將字符串與缺少第一個元素的切片版本交錯():這提供一個項目及其后繼者。


然后你可以比較:


code_string = "9511484596541141557316984781494999"

for d1,d2 in zip(code_string,code_string[1:]):

   if d1==d2:

      print(d1)

輸出:


1

1

5

9

9

可以通過經典方式找到這些數字的總和,或者在一行中使用sum生成器理解(在求和之前將數字轉換為整數):


result = sum(int(d1) for d1,d2 in zip(code_string,code_string[1:]) if d1==d2)

(這是25)


查看完整回答
反對 回復 2021-08-24
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

嘗試跟蹤兩個索引,而不是遍歷列表中的實際項目:


for i in range(0,len(code_string)):

    if code_string[i] == code_string[i+1]:

        print(code_string[i])


查看完整回答
反對 回復 2021-08-24
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號