Python:数据结构list的基本操作

转自:北京图灵学院刘大拿

python中有四种数据结构

  • 列表:list = [1,2,3, 4,’one’,‘two’]
  • 字典:dict = {‘a’:123,’b’:’something’}
  • 集合:set = {‘apple’,’pear’,’apple’}
  • 元组: tuple =(123,456,’hello‘)

这里总结一下list的一些基本操作,首先是关于列表的创建。

# 1. 创建空列表
l1 = []
# type是内置函数,负责打印出变量的类型
print(type(l1))
print(l1)

# 2. 创建带值的列表
l2 = [100]
print(type(l2))
print(l2)

# 3. 创建列表,带多个值
l3 = [2,3,1,4,6,4,6]
print(type(l3))
print(l3)

# 4. 使用list()
l4 = list()
print(type(l4))
print(l4)

<class 'list'>
[]
<class 'list'>
[100]
<class 'list'>
[2, 3, 1, 4, 6, 4, 6]
<class 'list'>
[]

列表常用操作

  • 访问
    • 使用下标操作(索引)
    • 列表的位置是从0开始
  • 分片操作
    • 对列表进行任意一段的截取
    • list[x:x]
下标访问列表示例
#列表中元素的顺序从左到右,从0开始计数
l = [3,2,1,4,6,3,2]
print(l[3])#输入数字位置直接打印出该数字
print(l[0])

4
3
分片操作示例

对列表进行分片时,它所定义的范围为[x:x),其包含左边的下标值,不包含右边的下标值,属于半开半闭区间

l = [3,2,1,4,6,3,2]
# 注意分片所截取的范围
print(l[1:4])
# 下标值可以为空,如果不写,左边下标值默认为0, 右边下标值为最大数加1,即表示截取到最后一个数据
print(l[:])#打印列表所有元素
print(l[:4])#打印第5号位置前所有元素(不包含第5号元素)
print(l[2:])#打印第3号位置后所有元素(包含第3号元素)

[2, 1, 4]
[3, 2, 1, 4, 6, 3, 2]
[3, 2, 1, 4]
[1, 4, 6, 3, 2]

对列表进行分片操作时,它选定元素的增长幅度是可以定义的,其格式为list(左区间:右区间:增长幅度)

l=[1,2,3,4,5,6,7,8]
# 分片可以控制增长幅度,默认增长幅度为1
print(l[1:6:1])

[2, 3, 4, 5, 6]

# 打印从下标1开始的数字,每次隔一个
print(l[1:6:2])

[2, 4, 6]

# 下标可以超出范围,超出后不在考虑多余下标内容
print(l[2:10])

[3, 4, 5, 6, 7, 8]

# 下标值,增长幅度可以为负数
# 为负数,表明顺序是从右往左,并且起始值是-1
# 规定: 数组最后一个数字的下标是-1

分片之负数下标

对列表进行切片操作时,其增长幅度可以为负数,当为负数时,列表中所有元素的位置计算顺序为从右往左,并且起始位置值为-1

l=(1,2,3,4,5,6,7,8,9)
print(l)
#下面打印显示的为空,因为默认分片总是从左向右截取。
print(l[-2:-4])
print(l[-4:-2])#正常情况,分片左边的值一定小于右边的值

# 如果分片时一定要左边值比右边大,则步长参数需要使用负数
# 此案例为一个list直接正反颠倒提供了一种思路
print(l[-2:-4:-1])
print(l[-3:-5:-1])

(1, 2, 3, 4, 5, 6, 7, 8, 9)
()
(6, 7)
(8, 7)
(7, 6)

分片操作是生成一个新的list

内置函数id(),其功能为显示一个变量或者数据的唯一确定编号

# id函数举例
a = 100
b = 200
print(id(a))
print(id(b))

c = a
print(id(c))

# 如果a跟c只想一份数据,则更改a的值同样也会更改c的值
# 但是,显示结果并非如此,为什么?
a = 101
print(a)
print(c)

93941189949760
93941189952960
93941189949760
101
100
# 通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据
l = [3,4,56,76,32,21,43,5]
ll = l[:]
lll = ll
# 如果两个id值一样,则表明分片产生的列表是使用的同一地址同一份数据
# 否则,则表明分片是从新生成了一份数据,即一个新的列表,然后把数值拷贝到新列表中
print(id(l))
print(id(ll))
print(id(lll))

# 通过id知道,ll和lll是同一份数据,验证代码如下
l[1] = 100
print(l)
print(ll)

ll[1] = 100
print(ll)
print(lll)


140226763582408
140226318124808
140226318124808
[3, 100, 56, 76, 32, 21, 43, 5]
[3, 4, 56, 76, 32, 21, 43, 5]
[3, 100, 56, 76, 32, 21, 43, 5]
[3, 100, 56, 76, 32, 21, 43, 5]

猜你喜欢

转载自blog.csdn.net/qq_28766729/article/details/82557871
今日推荐