python常用数据结构-列表list

列表的含义

  • 列表是有序的可变元素的集合,使用中括号[]包围,元素之间用英文逗号分隔
  • 在列表中,值可以是任意类型,列表的值一般也称为列表的元素
  • 列表是动态的,可以随时扩展和收缩
  • 列表是异构的,可以同时存放不同类型的对象
  • 列表中允许出现重复元素

列表中的每个元素都分配一个数字 - 它的位置或索引,第一个索引是0,第二个索引是1,依此类推。

列表的创建

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

#创建列表
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

列表使用:索引示意图

在这里插入图片描述
列表使用:切片

  • 切片 [start: stop: step] start 值: 指示开始索引值,如果没有指定,则默认开始值为 0;
    • stop 值: 指示到哪个索引值结束,但不包括这个结束索引值。如果没有指定,则取列表允许的最大索引值;
    • step 值: 步长值指示每一步大小,如果没有指定,则默认步长值为 1。
    • 三个值都是可选的,非必填

访问列表中的值

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

索引

  • 默认正向索引,编号从 0 开始。
  • 支持反向索引,编号从-1 开始。
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]

#读取列表中第一个元素
print("list1[0]: ", list1[0])  # list1[0]:  physics
#读取列表中第最后一个元素
print("list1[0]: ", list1[-1])  #2000
# 前闭后开原则,从第二个元素开始截取列表,,即索引从1-4,5取不到
print("list2[1:5]: ", list2[1:5])  # list2[1:5]:  [2, 3, 4, 5]

更新列表

你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:

list = []   ## 空列表
list.append('a')   ## 使用 append() 添加元素
list.append('b')
print(list)  ## ['a', 'b']

删除列表元素

可以使用 del 语句来删除列表的元素,如下实例:

list1 = ['physics', 'chemistry', 1997, 2000]
print("删除数据前",list1)  #删除数据前 ['physics', 'chemistry', 1997, 2000]
del(list1[2])
print("删除数据后 : ",list1)  #删除数据后 :  ['physics', 'chemistry', 2000]

列表常用方法

列表函数:

  1. len(list):列表元素个数
  2. max(list):返回列表元素最大值
  3. min(list):返回列表元素最小值
#列表的定义
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ("a", "b", "c", "d")
'''
 1. len(list):列表元素个数 
 2. max(list):返回列表元素最大值
 3. min(list):返回列表元素最小值 
'''
print("元素的长度:",len(list1)) #4
print("列表元素最大值:",max(list2)) #5
print("列表元素最小值:",min(list2)) #1

列表方法:

  1. list.append(obj):在列表末尾添加新的对象
list1 = ['physics', 'chemistry', 1997, 2000]
# 在列表末尾添加前的对象: ['physics', 'chemistry', 1997, 2000]
print("在列表末尾添加前的对象:",list1)
list1.append("a")
# 在列表末尾添加新的对象: ['physics', 'chemistry', 1997, 2000, 'a']
print("在列表末尾添加新的对象:",list1) #4

  1. list.count(obj):统计某个元素在列表中出现的次数
list1 = ['physics', 'chemistry', 1997, 2000]
# 统计physics在列表中出现的次数: 1
print("统计physics在列表中出现的次数:",list1.count("physics")) 
  1. list.extend(seq):将一个可迭代对象的所有元素,添加到列表末尾。
list1 = ['physics', 'chemistry', 1997, 2000]
list1.extend("haha")
list1.extend(list2)
# ['physics', 'chemistry', 1997, 2000, 'h', 'a', 'h', 'a', 1, 2, 3, 4, 5]
print(list1)
  1. list.index(obj):从列表中找出某个值第一个匹配项的索引位
list1 = ['physics', 'chemistry', 1997, 2000]
list1.index("chemistry")
# 查找chemistry在列表中的索引值 1
print("查找chemistry在列表中的索引值",list1.index("chemistry"))
#查找2000在列表中的索引值 3
print("查找2000在列表中的索引值",list1.index(2000))
  1. list.insert(index, obj):将一个对象插入到指定的索引位置
list1 = ['physics', 'chemistry', 1997, 2000]
list1.insert(1,"haha")
# 索引为1插入haha ['physics', 'haha', 'chemistry', 1997, 2000]
print("索引为1插入haha",list1)
list1.insert(3,"haha")
# 索引为3插入haha ['physics', 'haha', 'chemistry', 'haha', 1997, 2000]
print("索引为3插入haha",list1)
  1. list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

如果索引值不正确,或者列表已经为空,则引发 IndexError 错误

list1 = ['physics', 'chemistry', 1997, 2000]
# 不指定索引,默认是最后一个
list1.pop()
# 移除列表中的一个元素 ['physics', 'chemistry', 1997]
print("移除列表中的最后元素",list1)
list1.pop(1)
print("移除列表中的第二个个元素",list1)
  1. list.remove(obj):移除列表中某个值的第一个匹配
list1 = ['physics', 'chemistry', 1997,'chemistry', 2000]
list1.remove("chemistry")
# 移除列表中chemistry的第一个匹配: ['physics', 1997, 'chemistry', 2000]
print("移除列表中某个值的第一个匹配:",list1)
  1. list.reverse():反向列表中元素,即元素反转
list1 = ['physics', 'chemistry', 1997,'chemistry', 2000]
list1.reverse()
# 反向列表中元素: [2000, 'chemistry', 1997, 'chemistry', 'physics']
print("反向列表中元素:",list1)
  1. list.sort():对原列表进行排序
list1 = [1, 3, 4,2, 5 ]
list1.sort()
# 列表排序: [1, 2, 3, 4, 5]
print("列表升序排序:",list1)
list1.sort(reverse=True)
# reverse:默认值为 False 表示升序,为 True 表示降序
# 列表降序排序: [5, 4, 3, 2, 1]
print("列表降序排序:",list1)

列表嵌套列表

嵌套列表是指在列表里存放列表

# 1、列表的定义,['a', 'b', 'c']作为第一个元素,'a'作为第一个列表元素的第一个元素,[1, 2, 3]作为第二个元素
list = [['a', 'b', 'c'], [1, 2, 3]]
# 列表嵌套列表还是列表
print(type(list))  # <class 'list'>
# 打印列表长度
print(len(list))  # 2

# 2、打印list的第二个列表元素中的第二个元素
print(list[1][1])  # 2

列表推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

列表推导式格式为:

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

实例1:将 1~5 中的所有奇数的平方放到列表中

'''方法一'''
result = []
for ele in range(1, 6):
    if ele % 2 == 1:
        result.append(ele ** 2)
# 结果为: [1, 9, 25]
print("结果为:",result)

'''方法二:列表推导式'''
result = [ele ** 2 for ele in range(1, 6) if ele % 2 == 1]
# 列表推导式结果为: [1, 9, 25]
print("列表推导式结果为:",result)

实例2:计算 30 以内可以被 3 整除的整数

multiples = [i for i in range(30) if i % 3 == 0]
# 使用列表推导式结果为: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
print("使用列表推导式结果为:",multiples)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橙子软件测试菇凉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值