Python列表、数组切片(索引)

目录

1 列表

2 数组


Python里面的列表、数组的索引称之为切片。本文总结了一下常用切片的语法。

1 列表

列表的切片的通用规则:

A[start:end:step],step为步长,本文默认step为1。

列表分为一维列表和多维列表(本文统一采用二维列表来进行说明),列表切片的场景和语法如下:

列表类型场景描述Python表达方法
一维列表索引第i个元素A[i-1]
索引第一个元素A[0]
索引最后一个元素A[-1]
索引第i到j个元素A[i-1:j]
索引第一个元素到第i个元素A[:i]
索引第i个元素到最后一个元素A[i-1:]
索引全部元素A[:]
反转列表A[::-1]
二维列表索引i行j列的元素A[i-1][j-1]
索引第i行A[i-1]
索引第一行A[0]
索引最后一行A[-1]
索引第i行到j行所有元素A[i-1:j]
索引第1行到i行所有元素A[:i]
索引第i行到最后一行所有元素A[i-1:]
按行反转列表A[::-1]
索引第j列[row[j-1] for row in A]
索引第一列[row[0] for row in A]
索引最后一列[row[-1] for row in A]
索引第i列到j列所有元素[row[i-1:j] for row in A]
索引第1列到j列所有元素[row[:j] for row in A]
索引第j列到最后一列所有元素[row[j-1:] for row in A]
按列反转列表[row[::-1] for row in A]
索引第i行到第j行的第m列到n列的元素[row[m-1:n] for row in A[i-1:j]]
索引所有元素A[:]

        注:Python里面列表不能转置。

从中可以看出:

  • 一维列表元素索引和二维列表行索引的语法是一样的;
  • 由于列表在切片时没有列的概念,所以表达方式和数组大不一样。

2 数组

一维数组的表达方式都是一样的,没有需要多说的,主要在于二维数组的表达方式。在numpy里面,由于二维数组有列的概念,所以和二维列表相比,会简单一点。本文总结了两种通用规则。

方法一:完全照搬Matlab里面的表达思路

通用的规则如下:

 A[i:j,m:n]

① 当i不写时,索引第一行到第j行;
② 当j不写时,索引第i-1行到最后一行;
③ 当i和j都不写时,索引全部的行;
④ 列的规则和行的规则一样。

 数组索引的场景和语法如下:

数组类型场景描述Python表达方法
一维数组索引第i个元素A[i-1]
索引第一个元素A[0]
索引最后一个元素A[-1]
索引第i到j个元素A[i-1:j]
索引第一个元素到第i个元素A[:i]
索引第i个元素到最后一个元素A[i-1:]
索引全部元素A[:]
反转一维数组A[::-1]
二维数组索引第i行j列的元素A[i-1,j-1]
索引第i行A[i-1,:]
索引第一行A[0,:]
索引最后一行A[-1,:]
索引第i行到j行所有元素A[i-1:j,:]
索引第1行到i行所有元素A[:i,:]
索引第i行到最后一行所有元素A[i-1:,:]
按行反转数组A[::-1,:]
索引第j列A[:,j-1]
索引第一列A[:,0]
索引最后一列A[:,-1]
索引第i列到j列所有元素A[:,i-1:j]
索引第1列到j列所有元素A[:,:j]
索引第j列到最后一列所有元素A[:,j-1:]
按列反转数组A[:,::-1]
索引第i行到第j行的第m列到n列的元素A[i-1:j,m-1:n]
索引所有元素A[:]

方法二:采用数组转置的概念

通用规则如下:

行索引:A[i],规则和一维数组索引一样;

列索引:先将A转置,然后行索引,最后再转置。即:A.T[j].T

数组索引的场景和语法如下:

数组类型场景描述Python表达方法
一维数组索引第i个元素A[i-1]
索引第一个元素A[0]
索引最后一个元素A[-1]
索引第i到j个元素A[i-1:j]
索引第一个元素到第i个元素A[:i]
索引第i个元素到最后一个元素A[i-1:]
索引全部元素A[:]
反转数组A[::-1]
二维数组索引i行j列的元素A[i-1,j-1]
索引第i行A[i-1]
索引第一行A[0]
索引最后一行A[-1]
索引第i行到j行所有元素A[i-1:j]
索引第1行到i行所有元素A[:i]
索引第i行到最后一行索引元素A[i-1:]
按行反转数组A[::-1]
索引第j列A.T[j-1]
索引第一列A.T[0]
索引最后一列A.T[-1]
索引第i列到j列所有元素A.T[i-1:j].T
索引第1列到j列所有元素A.T[:j].T
索引第j列到最后一列所有元素A.T[j-1:].T
按列反转数组A.T[::-1].T
索引第i行到第j行的第m列到n列的元素A[i-1:j,m-1:n]
索引所有元素A[:]

        注:Python里面向量没有转置的概念。

笔者认为只要能抓住是否要转置这个点,方法二的思路比方法一的思路更加清明了。因为可以发现在方法二中,无论是一维数组索引、二维数组行索引、二维数组列索引,"[]"中索引的填写规则都是一样的。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dfreedom.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值