Python3学习笔记之 列表(9)


1.1 列表相关知识

序列是Python中最基本的数据结构。序列中的每个数据项都分配一个数字 - 它的位置或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的数据项的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

 

列表的数据项不需要具有相同的类型创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

 

L1 =['Google', 'Runoob', 1997, 2000]   #字符串与数字的混合

L2 =[1, 2, 3, 4, 5]      #纯数字

L3 =["a", "b", "c", "d"]      #纯字符串

 

 

与字符串的索引一样,列表索引从0开始。列表可以进行插入、删除、更改、切片(截取)、组合等

 

 

1.2 访问列表中的值

使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

L1 = [ 'zhangsan', 23, 'lisi', '1989', 'wangwu', 87]

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


print (L1)


# 取出列表中的zhangsan 、1989,索引是从0开始的,对应相应的列表,所以可以如下操作
print (L1[ 0 ],L1[ 3 ])
# 取出23、list、1989这一连续的段
print (L1[ 1 : 4 ])
# 取其中一段,叫截取也叫切片,官方术语“切片”,为什么取值是1~4 呢,因为它的特点是顾前不顾后,也就是保护第一数据项,但是不包含最后一个数据项

#取列表中最后一个数据项(87)
print (L1[ 5 ])  #如果列表数据项少,直接输出下标即可取值
print (L1[- 1 ])  #如果列表数据项太多,可以用-1表示最后一个数据项,-2表示倒数第二个数据项

#取列表中的最后三个数据项
print (L1[- 3 :])

# 取列表中的前4个数据项
print (L1[ 0 : 5 ])   #方法1
print (L1[: 5 ])    #方法2

 

#多列表联合取值
print(L1[2],L2[0:3])

 

 

 

脚本执行结果如下所示:

Python list.py

['zhangsan', 23, 'lisi', '1989', 'wangwu', 87]

zhangsan 1989

[23, 'lisi', '1989']

87

87

['1989', 'wangwu', 87]

['zhangsan', 23, 'lisi', '1989', 'wangwu']

['zhangsan', 23, 'lisi', '1989', 'wangwu']

lisi ['a', 'b', 'c']

 

 

 

1.3  更新列表

对列表的数据项进行修改和增加,修改直接赋值替换,用append()函数的方法来增加列表项

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

L1 = ['zhangsan',23,'lisi','1989','wangwu',87]

#打印列表数据项
print(L1)

#给列表增加一个数据项
L1.append("hongyi")
print(L1)


#在数据项lisi前面插入一个数据"chy"
L1.insert(2,"chy"# 2 是lisi的下标,chy是要插入的数据,插入在哪个数据项的前面就写哪个数据项的下标
print(L1)

#修改列表的值,把1989替换成2001
L1[4] = 2001    #直接赋值,另外要注意的是这个列表是插入过数据项的列表,不是原始列表
print(L1)

 

 

 

以上脚本执行结果如下所示:

Python list_append.py

['zhangsan', 23, 'lisi', '1989', 'wangwu', 87]

['zhangsan', 23, 'lisi', '1989', 'wangwu', 87, 'hongyi']

['zhangsan', 23, 'chy', 'lisi', '1989', 'wangwu', 87,'hongyi']

['zhangsan', 23, 'chy', 'lisi', 2001, 'wangwu', 87, 'hongyi']

 

 

 

1.4  删除列表的数据项

可以使用 del 语句来删除列表的的, 也可以用remove()函数的方法达到删除目的

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

L1 = ['zhangsan',23,'lisi',1989,'wangwu',87]

#打印列表数据项
print(L1)

#删除列表数据项23,方法1,用remove()函数
L1.remove(23)
print(L1)

#删除列表数据项wangwu,方法2用del删除
del L1[3]
print(L1)

#删除列表数据项87,方法3用pop()函数删除
L1.pop(3# 3 是下标,默认不输入下标即pop()的话,默认删除的是列表中的最后一个数据项
print(L1)

 

注:每一个列表都是以上一步操作完成后输出的列表为准,比如:删除方法3中的列表是以上删除方法2中的执行结果列表为基础的,而不是用原始列表演示该步骤。

 

以上脚本执行结果如下所示:

['zhangsan', 23, 'lisi', 1989, 'wangwu', 87]  #原始列表

['zhangsan', 'lisi', 1989, 'wangwu', 87]  

['zhangsan', 'lisi', 1989, 87]

['zhangsan', 'lisi', 1989]

 

 

 

1.5  列表的检索(index)、统计、反转、合并、排序

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

L1 = ['zhangsan',23,'lisi',1989,'wangwu',87,'f','j','k','zhangsan',23,23]

#打印列表数据项
print(L1)

#在多个数据项中查找f,利用index()函数
print(L1.index('f'))   #找出了名为f的数据项下标为6
print(L1[L1.index('f')])  #通过下标6查找出了该数据项名为f

#统计重复的数据项数量,利用count()函数
print(L1.count('zhangsan'),L1.count(23)) #统计zhangsan出现的次数和23出现的次数

#列表的反转,利用reverse()函数
print(L1)
L1.reverse()   #打印列表后执行反转操作
print(L1)  #再次打印列表,查看是否已经反转

#列表的排序,利用sort(),根据ascsi码排序
L2 = ['hangsan','llisi','angwu','angsan',]
L2.sort()
print(L2)

#利用extend()合并列表
L1 = ['zhangsan',23,'lisi',1989,'wangwu',87,'f','j','k','zhangsan',23,23]
L2 = ['hangsan','llisi','angwu','angsan',]
L1.extend(L2)
print(L1)
print(L1,L2)

 

 

 

以上脚本执行结果如下所示:

['zhangsan', 23, 'lisi', 1989, 'wangwu', 87, 'f', 'j', 'k','zhangsan', 23, 23]

6

f

2 3

['zhangsan', 23, 'lisi', 1989, 'wangwu', 87, 'f', 'j', 'k','zhangsan', 23, 23]

[23, 23, 'zhangsan', 'k', 'j', 'f', 87, 'wangwu', 1989,'lisi', 23, 'zhangsan']

['angsan', 'angwu', 'hangsan', 'llisi']

['zhangsan', 23, 'lisi', 1989, 'wangwu', 87, 'f', 'j', 'k','zhangsan', 23, 23, 'hangsan', 'llisi', 'angwu', 'angsan']

['zhangsan', 23, 'lisi', 1989, 'wangwu', 87, 'f', 'j', 'k','zhangsan', 23, 23, 'hangsan', 'llisi', 'angwu', 'angsan'] ['hangsan', 'llisi','angwu', 'angsan']

 

 

 

1.6  列表的浅copy与深copy

 

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

'''L1 =['zhangsan',23,'lisi',1989,'zhangsan',["mage","shangguan"],23,23]
L2 = L1.copy()   #用list 自带的copy()方法,拷贝一份
print(L1)
print(L2)

L1[0] = 2002
L1[5][0] = "MAge"
print(L1)
print(L2)'''     #浅copy

########################
import copy   # copy 模块里 copy() 函数解决
L1 = [ 'zhangsan', 23, 'lisi', 1989, 'zhangsan',[ "mage", "shangguan"], 23, 23]
L1[ 5][ 0] = "honghua"
L2 = copy.copy(L1)   #浅copy效果
L2 =copy.deepcopy(L1)   #深copy
print (L1)
print (L2)

 

##########################

a = [ 19 , 27 , 17 , 38 , 99 , 200 ]
print ( "a列表中最大的数是:" , max (a))
print ( "a列表中最小的数是:" ,min (a))
print (len (a))  #返回列表元素个数

以上脚本执行结果如下所示:

['zhangsan', 23, 'lisi', 1989, 'zhangsan', ['honghua','shangguan'], 23, 23]

['zhangsan', 23, 'lisi', 1989, 'zhangsan', ['honghua','shangguan'], 23, 23]

a列表中最大的数是: 200

a列表中最小的数是: 17

6

 

 

 

1.7  Python列表函数与方法小结

Python包含以下函数:

序号

函数

1

len(list)  列表元素个数  print(len(a))

2

max(list)  返回列表元素最大值

3

min(list)返回列表元素最小值

4

list(seq)将元组转换为列表

 

 

Python包含以下方法:

序号

方法

1

list.append(obj)  在列表末尾添加新的对象

2

list.count(obj)   统计某个元素在列表中出现的次数

3

list.extend(seq)  在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

4

list.index(obj)  从列表中找出某个值第一个匹配项的索引位置

5

list.insert(index, obj)  将对象插入列表

6

list.pop(obj=list[-1])  移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7

list.remove(obj)  移除列表中某个值的第一个匹配项

8

list.reverse()  反向列表中元素

9

list.sort([func])  对原列表进行排序

10

list.clear()  清空列表

11

list.copy()  复制列表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

远虑近忧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值