首頁  >  文章  >  後端開發  >  為什麼連接字串和類似位元組的物件時「.join()」會產生意外結果?

為什麼連接字串和類似位元組的物件時「.join()」會產生意外結果?

Linda Hamilton
Linda Hamilton原創
2024-11-12 13:26:02368瀏覽

Why Does `.join()` Produce Unexpected Results When Concatenating a String and a Bytes-like Object?

什麼是 .join() 以及它如何在連接字串中發揮作用?

Python 的 .join() 方法通常用於字串級聯。然而,在測試所提供的範例時,它產生了意想不到的結果。了解此方法的目的和用法可以闡明其行為的原因。

.join() 方法對字串進行操作,並採用可迭代的元素作為參數。它在連接期間在可迭代的每個元素之間插入指定的字串。

例如:

",".join(["a", "b", "c"])
# Output: 'a,b,c'

在提供的範例中:

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)

tostring()方法將字元陣列轉換為類似位元組的物件。然後,這個類似位元組的物件與字串「595」一起用作 .join() 的輸入。

但是,要理解的關鍵點是字串“595”被視為一個列表它的單個字符,即[“5”,“9”,“5”]。因此,「.join()」對此列表進行操作,在每個字元之間插入類似位元組的物件:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

輸出中的每個「5」、「9」、「 5」表示插入

要實現預期的串聯,可以使用運算符:

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

這種方法直接連接bytes-like對象具有字串“595”的對象,產生所需的輸出,而無需在字元之間插入任何內容。

以上是為什麼連接字串和類似位元組的物件時「.join()」會產生意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn