s[:n//2] → s[:3] → 'abc' # 取出索引 0,1,2 的字元
s[n//2:] → s[3:] → 'def' # 取出索引 3 到最後的字元
s[a:b]
取出字串從第 a
個位置開始(包含),到第 b
個位置**之前(不包含)**的字元。
所以 s[:n//2]
表示從開頭取到中間(不含中間的那個 index)
s = "ABCDEFGH"
n = len(s) = 8
left = s[:4] # 'ABCD'
right = s[4:] # 'EFGH'
zip(left, right)
這個函數會把兩個序列一一配對成 tuple(對),也就是:
如果 left = 'abc'
,right = 'XYZ'
那 zip(left, right)
結果就是:
[('a', 'X'), ('b', 'Y'), ('c', 'Z')]
i | s[i+1] | s[i] | 加到 t 的內容 | 結果 t |
---|---|---|---|---|
0 | 'b' | 'a' | 'ba' | 'ba' |
2 | 'd' | 'c' | 'dc' | 'badc' |
4 | 'f' | 'e' | 'fe' | 'badcfe' |