Python - 奇數頻率字元


在 Python 中,從給定字串中提取奇數頻率的字元是文字處理和資料分析中非常常見的任務。在本文中,我們將學習在 Python 中提取字串奇數頻率字元的各種方法。

使用字典

當需要跟蹤元素頻率時,字典非常方便。

方法

為了獲取奇數頻率的元素,我們將遍歷整個字串,對於字串中的每個字元,我們將增加字典中的字元計數。迭代結束時,我們將得到一個包含每個字元出現次數的字典,然後我們將顯示具有奇數頻率的字元。

解釋

  • 使用 for 迴圈遍歷字串。

  • 對於每個字元,使用字元作為鍵更新字典中的計數。

  • 使用 items() 方法獲取字典中的鍵值對,如果值為奇數,則將字元新增到結果列表中。

示例

st = "TutorialsPoint"

Occurrences = {}
result = []
   
# Populating dictionary with a count of each character
for char in st:
   Occurrences[char] = Occurrences.get(char, 0) + 1
# fetching characters with odd frequency
for char, count in Occurrences.items():
    if count % 2 != 0:
        result.append(char)
print(result)

輸出

['T', 'u', 'r', 'a', 'l', 's', 'P', 'n']

使用 Counter

Python 的 collections 模組中的 Counter 類提供了一種簡單的方法來計算迭代物件中元素的頻率,包括字串中的字元。我們可以使用這種方法來簡化提取奇數頻率字元的過程。

語法

Counter()

Counter(collection)
  • 集合:列表、元組、字串等。

解釋

  • 將字串傳遞給 Counter()

  • Counter() 將返回一個字典物件,其中包含列表中每個字元的頻率。

  • 遍歷字典並將具有奇數頻率的字元新增到結果列表中。

示例

from collections import Counter

Occurrences = Counter("TutorialsPoint")
result = []
for char, count in Occurrences.items():
    if count % 2 != 0:
        result.append(char)
   
print(result)

輸出

['T', 'u', 'r', 'a', 'l', 's', 'P', 'n']

使用列表推導和 count() 方法

列表推導提供了一種基於現有列表或其他迭代物件建立列表的方法。我們可以將列表推導與 count 方法一起使用來計算字串中每個字元的頻率,並構造一個包含奇數頻率字元的列表。

語法

count()

count(element)
  • 元素:我們要在迭代物件中計數的項。

  • count() 返回一個整數,即元素的計數。

解釋

  • 使用列表推導遍歷字串

  • 使用 set() 方法獲取字串中唯一字元的列表。

  • 如果字元計數為奇數,則將其新增到列表中。

示例

st = "TutorialsPoint"
uniqueChars = set(st)
result = [char for char in uniqueChars if st.count(char) % 2 != 0]
print(result)

輸出

['T', 'l', 'P', 'a', 'n', 's', 'r', 'u']

使用 For 迴圈

我們可以使用巢狀迴圈來查詢每個字元的頻率。對於每個字元,遍歷整個列表並遞增計數值,如果計數為奇數,則將其新增到結果列表中。

解釋

  • 遍歷列表中的每個元素

  • 對於每個元素,透過遍歷列表來檢查該元素的出現次數。

  • 如果計數為奇數,則將元素新增到結果列表中。

示例 4

st = "TutorialsPoint"

# getting distinct characters from string
uniqueChars = set(st)
result = []
for i in uniqueChars:
    count = 0
    for j in st:
        if(i==j):
            count= count+1
    if(count%2==1):
        result.append(i)
print(result)

輸出

['T', 's', 'P', 'r', 'n', 'a', 'u', 'l']

結論

在本教程中,我們討論了從字串中檢索奇數頻率字元的多種方法。我們實現的最後一種方法效率不高,只能用於小型資料,而其他三種方法可以用於大型輸入。

更新於:2023年8月9日

314 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告