三、python 裡面的字串知識補充
python 中最高頻被使用的乙個資料型別,就是字串,本篇部落格不在討論字串的基本使用,哪些在第一遍滾雪球的時候就已經被強調了,這次在增加 2 個細節的知識點
3.1 字串是不可變的
字串是不可變的,對此有乙個疑問是下述**,貌似字串變數 my_str 發生了改變,但是你可以修改**,獲取一下**的記憶體位址,會發現下述**,其實是新建立了乙個同名的字串。
my_str = "hello "
my_str += "world"
print(my_str)
比較記憶體位址。
my_str = "hello "
print(id(my_str))
my_str += "world"
print(id(my_str))
print(my_str)
執行結果如下:
hello world
3.2 字串拼接效率問題
對比下述幾段**比較字串拼接的效率問題。
import time
# += 寫法
def m0():
s = ' '大連**醫院
for n in range(0, 100000):
s += str(n)
# join 寫法
def m1():
l =
for n in range(0, 100000):
s = ' '.join(l)
# pythonic 寫法
def m2():
s = ' '.join(map(str, range(0, 100000)))
start_time = time.perf_counter()
m0()
end_time = time.perf_counter()
print("**執行時間為:", end_time-start_time)
在迴圈 100000 次的情況下,前 2 份**消耗時間差異不大,但是 m2 效率高了一些,隨著迴圈次數增大,會發現 m2 逐漸拉開差距,甚至資料到一千萬的時候,m0 沒有計算出結果,因為電腦原因,卡住了。
m0:**執行時間為: 0.026987474000000004
m1:**執行時間為: 0.025112976000000002
m2:**執行時間為: 0.019118731
從字串這種資料型別本身出發,join 函式比 += 快,最後一種寫法,其實是 map 遍歷提高的效率,這點需要注意下,不過第三種寫法確實比較 pythonic。
python 字串補充
capitalize casefold 都是返回新字串,原字串並未改變 str1 never say never pa str1.capitalize 第乙個字母大寫 print pa never say never 整個字串的所有字元改為小寫 str1.casefold 字串居中,左右兩邊用空格填...
python中關於字串的操作
字串的定義,用雙引號與單引號都可以 name hello world 正確 name hello world 錯誤 name hello world 正確 name hello world 錯誤 title方法 將字串中單詞的首字母變為大寫,其他字母均為小寫 name love live print...
字元和字串的補充
char 首先注意char只能存乙個字元 判斷是否為字母 character char1 a characyer.isletter char1 判斷是否為數字 character.isdigit char1 判斷是否是大寫 character.isuppercase char1 判斷是否是小寫 ch...