【python学习】python列表类型

中国史之【阪泉之战】:
黄帝征服中原各族的过程中,与炎帝两部落在阪泉进行了一次战争,通过此战,黄帝战胜了炎帝,取代了炎帝在黄河流域各部落中盟主的地位,从而形成了炎黄部落联盟,构成了后来的华夏民族,后代就被称为了“炎黄子孙”。
-来源:全历史APP

今天讲python的列表类型。有需要的也可以直接去我的github查看全部笔记:
https://github.com/JackKoLing/python_notes_with_ten_days
图片俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。
对于环境的配置,可以参考以下两篇:

1 前言:序列类型

  • 字符串、列表、元组
  • 其中字符和元组是不可变序列,而列表支持插入、删除和替换元素,它们都支持迭代

2 列表类型

(1)容器类型:
  • 任意对象的有序集合,通过索引访问其中的元素
  • 可变对象,支持异构(可包含多种不同元素),任意嵌套
l1 = []
print(id(l1))
>>> 
2507620257288

注:>>>表示output,下同。

l2 = [1,2,3,4,5]
print(l2)
>>> 
[1, 2, 3, 4, 5]	


l3 = [1, 'b'] # 异构
print(l3)
>>>
[1, 'b']

l4 = [[1, 2], ['a', 'b']] # 嵌套
print(l4)
>>>
[[1, 2], ['a', 'b']]
(2)支持在原处修改:
  • 修改的是引用,而不是对象
  • 可修改指定的索引元素,修改指定的分片,删除语句,使用内置方法
print(l2)
l2[1] = 32
print(l2)
>>>
[1, 2, 3, 4, 5]
[1, 32, 3, 4, 5]


l2[3] = "xyz"
print(l2)
>>>
[1, 32, 3, 'xyz', 5]


l2[1:3] # 顾首不顾尾,所以只取索引为1,2的元素
>>>
[32, 3]


print(l2)
l2[1:3] = [] # 把1、2设为空
print(l2)
print(l2[1])
>>>
[1, 32, 3, 'xyz', 5]
[1, 'xyz', 5]
xyz


print(l2)
l2[1:] = ['m',  'n', 'r'] # 1:是指从下标1到最后,包括最后
print(l2)
>>>
[1, 'xyz', 5]
[1, 'm', 'n', 'r']


print(id(l2))
print(l2)
del(l2[1:])
print(l2)
>>>
2507620552392
[1, 'm', 'n', 'r']
[1]


print(id(l2)) # 可见这是在原处修改,不会改变它的id
>>>
2507620552392


l3 = [1, 2, 3, 4, 5, 6]
l3.append(77) # 添加元素,最常用
print(l3)
>>>
[1, 2, 3, 4, 5, 6, 77]


print(id(l3))
l3.append(106)
print(l3)
print(id(l3))
>>>
2507620217992
[1, 2, 3, 4, 5, 6, 77, 106]
2507620217992


l4 = ['x', 'y', 'z']
l3.append(l4) # 添加一个元素
print(l3)
print(id(l3))
>>>
[1, 2, 3, 4, 5, 6, 77, 106, ['x', 'y', 'z']]
2507620217992


l3.append(2)
print(l3)
l3.count(2) # 统计参数出现多少次
>>>
[1, 2, 3, 4, 5, 6, 77, 106, ['x', 'y', 'z'], 2]
2


l3.extend(l4) # 将参数的每个元素都一一并入列表中
print(l3)
>>>
[1, 2, 3, 4, 5, 6, 77, 106, ['x', 'y', 'z'], 2, 'x', 'y', 'z']


l3.index(5) # 查找参数的索引
>>>
4


l3.insert(1, 333) # 在第一位插入333
print(l3)
>>>
[1, 333, 2, 3, 4, 5, 6, 77, 106, ['x', 'y', 'z'], 2, 'x', 'y', 'z']


l3.pop() # 不给参数则默认弹出删除最后一个元素
print(l3)
l3.pop(8) # 注意参数是索引。被弹出的数值能直接赋值给其他变量
print(l3)
>>>
[1, 333, 2, 3, 4, 5, 6, 77, 106, ['x', 'y', 'z'], 2, 'x', 'y']
[1, 333, 2, 3, 4, 5, 6, 77, ['x', 'y', 'z'], 2, 'x', 'y']


l3.remove(1) # 注意这个参数是元素的值
print(l3)
>>>
[333, 2, 3, 4, 5, 6, 77, ['x', 'y', 'z'], 2, 'x', 'y']


l3.reverse() # 逆序,返回为None
print(l3)
>>>
['y', 'x', 2, ['x', 'y', 'z'], 77, 6, 5, 4, 3, 2, 333]


l5 = [3, 2, 6, 8]
l5.sort() # 排序,其返回为None
print(l5)
>>>
[2, 3, 6, 8]
(3)两个列表l1、l2操作:
  • l1 + l2:合并两个列表,返回一个新的列表(和字符串加法类似)
  • l1 * N:把l1重复N次,返回一个新的列表
l1 = [1, 2, 3, 'x']
l2 = ['x', 'y', 'z']
print(l1 + l2)
>>>
[1, 2, 3, 'x', 'x', 'y', 'z']


print(l1 * 3)
>>>
[1, 2, 3, 'x', 1, 2, 3, 'x', 1, 2, 3, 'x']
(4)in:成员关系判断字符:
  • 用法: object in container
  • not in的用法相似,object not in container
print(2 in l1)
print(22 not in l1)
>>>
True
True
(5)列表解析:
  • 和for循环一起使用,在[]内操作
l1 = [10, 20, 30, 40, 50]
for i in range(len(l1)):
    l1[i] += 5
print(l1)
>>>
[15, 25, 35, 45, 55]


l2 = [10, 20, 30, 40, 50]
l2 = [i+5 for i in l2]
print(l2)
>>>
[15, 25, 35, 45, 55]
(6)列表复制三种方式:
  • l2 = l1 注意这种是赋值,指向同一对象,并非新建对象
  • l2 = l1[:] 这种复制是生成新的对象
  • import copy
    l2 = copy.deepcopy(l1) 这种也是生成新对象
l1 = [1, 2, 3]
l2 = l1 # 列表赋值
print(l2)
l1.append(4)
print(l1)
print(l2)
print(id(l1), id(l2)) # 可见指向同一对象
>>>
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4]
2507620234952 2507620234952


l3 = l1[:] # 列表复制
print(l3)
l1.append(5)
print(l1)
print(l3)
print(id(l1), id(l3)) # 可见是不同对象
>>>
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
2507620234952 2507620507976


import copy
print(l1, id(l1))
l4 = copy.deepcopy(l1)
print(l4, id(l4)) # 可见这种方法也可以新建对象式的复制
>>>
[1, 2, 3, 4, 5] 2507620234952
[1, 2, 3, 4, 5] 2507620217992

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的元组类型。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JackkoLing

感谢你的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值