在python中,字符串是否可變?該生產線someString[3] = "a"
引發錯誤替換python中的字符串中的一個字符
TypeError: 'str' object does not support item assignment
我明白爲什麼(我可以寫someString [3] =「測試」,而顯然是非法的),但有沒有在Python做到這一點的方法?
在python中,字符串是否可變?該生產線someString[3] = "a"
引發錯誤替換python中的字符串中的一個字符
TypeError: 'str' object does not support item assignment
我明白爲什麼(我可以寫someString [3] =「測試」,而顯然是非法的),但有沒有在Python做到這一點的方法?
Python字符串是不可變的,因此它們不支持項目或切片分配。您必須使用someString[:3] + 'a' + someString[4:]
或其他合適的方法構建新的字符串。
不是存儲您的值作爲一個字符串,你可以使用的字符列表:如果你想將其轉換回字符串,以顯示它
>>> l = list('foobar')
>>> l[3] = 'f'
>>> l[5] = 'n'
然後,使用這樣的:
>>> ''.join(l)
'foofan'
如果您每次更改大量字符,則此方法將比每次更改字符時生成新字符串的速度快得多。
在足夠新的蟒蛇中,您還可以使用內置bytearray
類型,這是可變的。請參閱stdlib文檔。但是,「足夠新」意味着2.6或更高,所以這不一定是一種選擇。
在較老的python中,您必須創建一個新的str
,如上所述,因爲這些是不可變的。這通常是最可讀的方法,但有時使用不同類型的可變序列(如字符列表,或可能是array.array
)是合理的。 array.array
雖然有點笨重,並且通常可以避免。
>>> import ctypes
>>> s = "1234567890"
>>> mutable = ctypes.create_string_buffer(s)
>>> mutable[3] = "a"
>>> print mutable.value
123a567890
我有一個二進制字符串,並在一定條件下,我想翻轉特定的0到1 – Chris 2010-01-29 21:19:04
但是總體來說,我想翻轉特定字母X到Y。現在我正在處理二進制字符串,但它是一個普通的查詢 – Chris 2010-01-29 21:19:36
另一個提示:如果你正在做「二進制字符串」,即只包含1和0的字符串,檢查像BitVector這樣的庫,這是更快,更方便用於位矢量操作。 此外,請參閱位於Python的位向量問題http://stackoverflow.com/questions/2147848/how-do-i-represent-and-work-with-n-bit-vectors-in-python/2147873 #2147873 – 2010-01-29 21:21:42