python初學第五天 高階特性之切片

2021-10-03 22:33:47 字數 3188 閱讀 8763

切片就是按位置取出 乙個list或者tuple 的一部分

>>

> l =

['michael'

,'sarah'

,'tracy'

,'bob'

,'jack'

]>>

> l[0:

3]['michael'

,'sarah'

,'tracy'

]

切片操作 l[0:n] 指從取出前n個元素,即從索引為0 到 n-1 的元素,不包括n,在切片操作中 只取到索引為 n-1的元素,如果第乙個索引為0,可以省略0

>>

>l[:3

]

也可以按倒序取出元素

>>

> l[-2

:]['bob'

,'jack'

]>>

> l[-2

:-1]

['bob'

]

但是在倒序中如果需要取到倒數第乙個,冒號後面留空即可,如果冒號後索引為-1即為倒數第乙個元素,對於l[-2:-1]同樣取不到-1,但對l[-2:]則能取到倒數第乙個元素。

取前n 個元素l[:n]後n個元素l[-n:]

如果需要前十個每隔 2個取乙個,則

>>

> l[:10

:2][

0,2,

4,6,

8]

所有元素每隔2個取乙個

>>

> l[::

2][0

,2,4

,6,8

]

只寫[:]則為複製乙個list

>>

> l[:]

[0,1

,2,3

,...

,99]

tuple同樣是乙個list,也可以使用切片操作,但是切片的結果是乙個tuple

>>

>(0

,1,2

,3,4

,5)[

:3](

0,1,

2)

字串也可以看成乙個list,每個元素就是乙個字元,也可以使用切片操作,結果也是乙個字串

>>

>

'abcdefg'[:

3]'abc'

>>

>

'abcdefg'[:

:2]'aceg'

在很多程式語言中,針對字串提供了很多各種擷取函式(例如,substring),其實目的就是對字串切片。python沒有針對字串的擷取函式,只需要切片乙個操作就可以完成,非常簡單。

利用切片操作,實現乙個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法:

# -*- coding: utf-8 -*-

deftrim

(s):

def

trim1

(s):

for i in s:

if s[:1

]==' ':

s=s[1:

]if s[-1

:]==' '

: s=s[:-

1]return s

deftrim2

(s):

# print(s[0])

if s[:1

]==' ':

s = s[1:

] s = trim(s)

if s[-1

:]==' '

: s = s[:-

1]s = trim(s)

return s

deftrim3

(s):

if s[:1

]==" ":

s = s[1:

] s = trim(s)

elif s[-1

:]==" "

: s = s[:-

1]

s = trim(s)

#這裡不能再else 裡加 返回,因為對於有兩個空格,第一層先減乙個,然後進第二層再減乙個,第三層發現沒有了返回乙個s給第二層,然後第二層之後沒有返回,預設返回乙個空值,所以這個返回不能加在else裡,而應該在加在if外面

# else:

# s = s

# return s

return s

deftrim4

(s):

while s[:1

]==' ':

s = s[1:

]while s[-1

:]==' '

: s = s[:-

1]return s

# 測試:

if trim(

'hello ')!=

'hello'

:print

('測試失敗!'

)elif trim(

' hello')!=

'hello'

:print

('測試失敗!'

)elif trim(

' hello ')!=

'hello'

:print

('測試失敗!'

)elif trim(

' hello world ')!=

'hello world'

:print

('測試失敗!'

)elif trim('')

!=''

:print

('測試失敗!'

)elif trim(

' ')!=

'':print

('測試失敗!'

)else

:print

('測試成功!'

)

在這裡,應該使用切片而不是索引,因為若 s為 『』 空值,則會索引越界,而是用切片則不會出現索引越界

初學Python第五天

繼上次10.3賦值運算子之後 4 位運算子 定義 把數字看做二進位制進行計算的運算子。例如 1 按位 與 運算子 只要兩個對應的二進位制位有乙個為0,則該位結果為0,否則為1 60 13 輸出結果12,二進位制解釋 00001100。2 按位 或 運算子 只要兩個對應的二進位制位有乙個為1,則該位結...

python初學第五天 高階特性之列表生成式

如果要生成list 1,2,3,4,5,6,7,8,9,10 可以使用list range 1,11 但是如果要生成x x 首先可以通過迴圈來新增元素到列表後部,但是較為繁瑣 第二種方法則是使用列表生成式來生成list x x for x in range 1 11 1,4 9,16 25,36 4...

2020 3 15初學python第五天

字典dict 不是序列,用大括號括起來,體現對映關係,由鍵和值組成。如 訪問字典的方法 keys 返回字典所有的鍵 values 返回字典所有的值 items 把每乙個項 剪 值 以元組的形式列印出來 clear 清空乙個字典 update 更新字典 等 集合set 用大括號括起來,不反映對映關係,...