列表1:列表基础

本文详细介绍了Python列表的基础知识,包括列表的多样性、使用for循环和下标读取元素,列表切片的语法及示例,列表的嵌套以及二维列表的同一性问题。通过实例探讨了is运算符在检验列表同一性中的应用。

目录

1. 列表说明

2. 列表切片

3. 列表嵌套

4. 二维列表的同一性问题


1. 列表说明

列表可以包括整型、浮点型、字符型多种数据

[1,2,3,4,5]
[1, 2, 3, 4, 5]
[1.0,2,3,'ABC']
[1.0, 2, 3, 'ABC']

列表可以通过for结构循环读取

x = [1.0,2,3,'ABC']
for each in x:
    print(each)
   
1.0
2
3
ABC

或者通过下标索引方法读取

x = [1,2,3,4,5,'上山打老虎']
x[0]
1
x[5]
'上山打老虎'
x[-1]
'上山打老虎'
x[-6]
1

2. 列表切片

列表可以如同序列一样进行切片操作,序列实现切片操作的语法格式如下:

sname[start : end : step]

其中,各个参数的含义分别是:

  • sname:表示序列的名称;
  • start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
  • end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
  • step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。
x = [1,2,3,4,5,'上山打老虎']

#从元素0到元素3之前(即元素3-1 == 元素2)
x[0:3]
[1, 2, 3]

#从元素3到元素5-1
x[3:5]
[4, 5]

#从元素到元素6-1
x[3:6]
[4, 5, '上山打老虎']

#元素3及之后所有数据
x[3:]
[4, 5, '上山打老虎']

#元素3-1及之前所有数据
x[:3]
[1, 2, 3]

#列表所有数据
x[:]
[1, 2, 3, 4, 5, '上山打老虎']

#从元素0开始,每个间隔2到元素6-1
x[0:6:2]
[1, 3, 5]

#全部列表元素,每个间隔3
x[::3]
[1, 4]

#全部列表元素,从后每个间隔1
x[::-1]
['上山打老虎', 5, 4, 3, 2, 1]

3. 列表嵌套

二维列表如下述两种方法描述,都是等价的

matrix = [[1,2,3],
          [2,3,4],
          [3,4,5]]
matrix
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

matrix = [[1,2,3],[2,3,4],[3,4,5]]
matrix
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

可以通过二层for循环读取每个整数如下:

>>> for i in matrix:
...     for j in i:
...         print(j, end='  ')
...         
1  2  3  2  3  4  3  4  5  1  2  3  2  3  4  3  4  5 

通过二层下标也可以读取每个元素

matrix[0][0]
1
matrix[2][0]
3

4. 二维列表的同一性问题

说明:is 运算符,用于同一性检验

应用示例,看似一样的二维列表A和B赋值如下:

#赋值二维列表A
A = [0] * 3
A
[0, 0, 0]
for i in range(3):    
...     A[i] = [0] * 3
...     
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

#赋值二维列表B
B = [[0] * 3] * 3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

但是做修改操作时,发生问题如下:

#修改A的一个元素,只有单个元素修改
A[1][1] = 1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
#修改B的一个元素,所有二级列表都发生了变动
B[1][1] = 1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]

通过is检查同一性如下:

A[0] is A[1]
False
B[0] is B[1]
True

A和B的生成原理如下图:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

燃烧的火鸟啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值