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

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

如何計算部分字符串出現在列表中的次數?

如何計算部分字符串出現在列表中的次數?

富國滬深 2023-06-13 10:59:39
假設我有一個列表,我想計算部分字符串出現“AB”的次數有沒有辦法讓 count() 工作?我想嘗試在不將代碼分解為循環的情況下盡可能提高效率。my_list = ["ABC", "ABD", "DCF", "ARC", "AVB", "ABG"]正確的輸出= 3
查看完整描述

5 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

您的預期行為是什么["ABAB"]?你想要2還是1?如果你愿意2,你仍然會從“計數”中獲得價值。

sum(s.count("AB") for s in my_list)

話雖這么說,你的問題似乎定義不明確,如果你的字符串是“AA”,你期望有多少["AAA", "AA", "A"]?1(準確)?2(每件)?3(所有可能的范圍)?


查看完整回答
反對 回復 2023-06-13
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

您可以使用 sum 內置函數。在你的情況下,

my_list = ["ABC", "ABD", "DCF", "ARC", "AVB", "ABG"]
sum('AB' in s for s in my_list)

輸出:3

此代碼有效,因為布爾值可以被視為整數。每次“AB”出現在字符串元素中時,都會返回 True。True 的整數值為 1。所以就好像每次字符串中出現 'AB' 時,都返回 1。因此,對返回的 1 求和將得出 1 在元素中出現的次數。


查看完整回答
反對 回復 2023-06-13
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

如果這是一個損害時間效率的巨大列表,您可以將其并行化。

  • 初始化一個全局計數器

  • 將列表拆分為 n 個塊

  • 對于每個塊,生成一個線程并將其發送到一個函數,該函數在內部運行一個循環以計算該塊中“AB”的出現次數

  • 讓每個線程更新 globalCounter

  • 當所有線程執行完畢,返回globalCounter作為結果

雖然這仍然有效地遍歷整個列表,但并行化縮短了時間。


查看完整回答
反對 回復 2023-06-13
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

循環遍歷每個元素,如下所示:


sum(1 for i in my_list if "AB" in i)

或者更長的選擇:


count = 0

for i in my_list:

    if "AB" in my_list[i]: count+=1

注意:我知道 OP不想循環,但我認為沒有它是不可能的。


查看完整回答
反對 回復 2023-06-13
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

你可以把它變成一個字符串并使用str.count:


>>> my_list = ["ABC", "ABD", "DCF", "ARC", "AVB", "ABG"]

>>> ' '.join(my_list).count('AB')

3

或者使用sum和理解:


>>> sum(s.count('AB') for s in my_list)

3


查看完整回答
反對 回復 2023-06-13
  • 5 回答
  • 0 關注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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