目前我正在學習Python3,並且我已經有一些C的經驗。 我需要移動字符串來擺脫兩個第一個字節。這裏的代碼在C:python中的字符串操作
char *a = "Hello World";
a += 2;
printf ("%s", a)
這一計劃將輸出「LLO世界」
我不知道是否有在Python有效做這樣的事情的一種方式,而不復制整個字符串。
目前我正在學習Python3,並且我已經有一些C的經驗。 我需要移動字符串來擺脫兩個第一個字節。這裏的代碼在C:python中的字符串操作
char *a = "Hello World";
a += 2;
printf ("%s", a)
這一計劃將輸出「LLO世界」
我不知道是否有在Python有效做這樣的事情的一種方式,而不復制整個字符串。
Python比C級別更高,並理解字符串是什麼。你可以這樣做:
s = "Hello World"
print(s[2:])
你可以在這裏找到更多:https://docs.python.org/3/tutorial/introduction.html#strings。
切片字符串複製元素。 –
那麼,你可以使用[memoryview](https://docs.python.org/3/library/stdtypes.html#memoryview),但在大多數情況下它可能是不值得的,絕對不適合初學者。 – qsantos
FYI:你不需要申報任何變量,你可以直接對字符串進行操作
"Hello world"[2:] # llo world
2.x中最接近的操作是從字符串中創建buffer
,然後對其進行切片。創建buffer
是附加操作,但只需執行一次,因爲buffer
可以重複使用。
>>> a = 'Hello world'
>>> b = buffer(a)
>>> print b[2:]
llo world
>>> print b[:5]
Hello
3.x沒有buffer
,但你不應該試圖在Python中模擬C代碼。找出你實際要做的事情,然後爲它編寫適當的Pythonic代碼。
Python在你的意思上並不習慣於高效。該語言有自己的'Pythonic'代碼約定範例,並且直接使用指針來尋址內存空間並不常見。這個問題的答案都是標準的「Pythonic」做事情的方式 - 將字符串當作字符列表處理,並返回一個包含所需子字符串的新列表。 –