python List 切片總結

2021-10-12 03:19:14 字數 2469 閱讀 6800

a = [1,3,4,2,'a','d']print a[::-1]>>> a = [1,3,4,2,'a','d']print a[3::-1]

>>> [2,4,3,1]

語法:[start:stop:step]

step代表切片步長;切片區間為[start,stop),包含start但不包含stop

1.step > 0,從左往右切片

2.step <0,從右往左切片

3.start、stop、step 為空值時的理解:

start、stop預設為列表的頭和尾,並且根據step的正負進行顛倒;step的預設值為1

4.start、stop為負,無論step正負,start、stop代表的是列表從左到右的倒數第幾個元素

st = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

print(st[2:6:2])

print(st[6:2:-2])

print(st[::1])

print(st[::-1]) # 倒序輸出

print(st[-1])

輸出結果:

['c', 'e']

['g', 'e']

['a', 'b', 'c', 'd', 'e', 'f', 'g']

['g', 'f', 'e', 'd', 'c', 'b', 'a']

g

numpy

list = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[2, 2, 3], [4, 9, 6], [7, 8, 9]]]

list = np.array(list)

print(list[:, 1, :])

print(list[:, -1, 0])

[[4 5 6]

[4 9 6]]

[7 7]

numpy作為乙個高效率的矩陣計算工具,除了基本的加減乘除以及切片外,還有比較獨特的索引功能。索引功能我們比較常見有序號索引以及轉置,如下:

import numpy as np

arr = np.arange(20).reshape(4,5)

##建立了乙個4行5列的矩陣

##索引取其中的第4、3、1、2行

arr[[3,2,0,1]]

##獲取其轉置矩陣

arr.t

##變成了5行4列的矩陣

當我們開始遇到多維陣列時,題目中提到的transpose和swapaxes就開始發揮作用了。

1.1 transpose 按照多維陣列的軸的索引進行變換。

乍一聽是不是有點繞,別急,慢慢來。首先我們來了解下多維陣列的軸是什麼東東?

對於多維陣列來說,乙個維度就是乙個軸。

我們知道一維為一條線,二維為乙個平面,三維為乙個空間,到四維已經超越了我們人類肉眼能夠觀測的空間。

arr1.ndim = 1 arr1.shape = (4,)

[5,6,7,8]]),

arr1.ndim = 2 arr2.shape = (2,4)

[5,6,7,8]],

[[9,10,11,12],

[13,14,15,16]]]),

arr2.ndim = 3 arr3.shape = (2,2,4)

是否大概對軸有乙個直觀的了解?

言歸正傳,對於transpose來說,會將多維陣列的軸編號,也就是給各個軸建立索引,我們自設乙個三維陣列,維數為(2,2,4),有三個軸:

arr = np.arange(16).reshape(2,2,4)

當我們進行變換時,有arr.transpose(2,1,0),這裡就是讓索引2變換到了索引0的位置,索引0變到了索引2的位置,索引1保持不變,根據索引的變動,形狀也發生相關位置的變化,如下:

這個時候,我們的多維陣列就變成了:

1.2 swapaxes 對軸進行兩兩置換

理解了上面的transpose,應該再理解swapaxes就不難了。swapaxes實際上也是針對軸索引進行變化,區別就在於transpose可以一次搞三個,但是swapaxes只能兩兩置換。

對於swapaxes來說,括號內的兩引數,交換位置和不交換,實際結果相同。

接上例:

arr.swapaxes(1,2)(實際上等價於arr.swapaxes(2,1)),那麼原多維陣列就變為:

也就是:

學習筆記 Python List切片方法

初始化一列表如下 a 1,2,3,4,5,6,7,8,9,10 對列表進行一系列切片操作以及對應操作的輸出 print a 4 取前4個元素 1,2,3,4 print a 3 取第三個元素之後的所有元素 4,5,6,7,8,9,10 print a 3 a 3 相當於a 3 預設步長為1 4,5,...

python list巢狀的切片,規律難以理解

一維python list的切片沒有問題。可是巢狀list也就是多維的切片,規律就難以理解,目前還沒找到規律,請看下面的 def printm1m2 print m1 print m2 m1 1,2,3,4 21,22,23,24 31,32,33,34 m2 100,200,300,400 101...

python list 常用方法總結

參考 只要把逗號分隔的不同的資料項使用方括號 括起來即可 下標 角標,索引 從0開始,最後乙個元素的下標可以寫 1 list1 a aa aaa aaaa aaa list1 空列表 aaaa 在list 末尾增加乙個元素 list insert 2 ccc 在指定位置新增元素,如果指定的下標不存在...