python基础语法-三大内建数据结构之列表(list)

定义

  • 列表(list):一组有顺序的数据的集合(用中括号包裹)。
  • 元组tuple是一种特殊的列表,不能修改,具有list除了修改的所有操作(用圆括号括着)。这里的不可修改是指那一份数据不可修改,两个tuple连接给一个新的tuple这类本质是创建的操作是允许的。但是内容修改会违法。

创建及分片

分片操作会产生一个新的list,而不是共同管理变量的关系。(相当于深度拷贝)

示例代码。

# 空列表
l1 = []
# 有初值的列表(可放入若干个各种类型的数据)
l2 = [1, 2, 3, "lk"]
# 类似构造的创建方法
l3 = list()

# 列表的访问,按照下标索引(编程语言编号几乎都是从零开始) 下标索引不能越界
print(l2[0])

# 列表的分片操作 l[开始位置:结束位置(达不到):步长(默认为1)]  分片操作的位置可以越界,但超出的不会考虑
l = [1, 2, 3, 4, 5, 6]
# 位置值可以一个或者两个为空,系统给默认值开始位置和结束位置+1
print(l[:])
print(l[0:4:2])
print(l[-2:-4])
print(l[-2:-4:-1])#改变方向从右往左

输出如下。

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

 示例代码。

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

l1 = l

l2 = l[:]

print(id(l))
print(id(l1))
print(id(l2))

输出如下。

2435785292352
2435785292352
2435785291392

删除

示例代码。

list1 = [1, 2, 3, 4, 5]
print(list1)
print(id(list1))
del(list1[0])
# 或者使用list1.pop(0)
print(list1)
print(id(list1))

 输出如下。

[1, 2, 3, 4, 5]
2682781039232
[2, 3, 4, 5]
2682781039232

列表的加、乘以及成员资格运算

list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8]
list3 = list1 + list2
print(list3)
list4 = list1 * 3
print(list4)
print(1 in list1)
print(10 in list1)
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
True
False

遍历(python独有的遍历方法)

list1 = [1, 2, 3, 4, 5]
list2 = [["a", 1], ["b", 2]]
for item in list1:
    print(item, end=" ")
print()
# 字典的遍历方法,局限性高
for k, v in list2:
    print(k, ",", v)
1 2 3 4 5 
a , 1
b , 2

列表内容的生成方式/列表生成式(也可以for嵌套)

list1 = [1, 2, 3, 4, 5]
list2 = [item for item in list1]
print(list2)
list3 = [item*10 for item in list1]
print(list3)
list4 = [item for item in list1 if item % 2 == 0]
print(list4)
str1 = "13579"
list5 = [int(item) for item in str1]
print(list5)
[1, 2, 3, 4, 5]
[10, 20, 30, 40, 50]
[2, 4]
[1, 3, 5, 7, 9]

列表常用的内置函数(可自行查看说明文档)

list1 = [1, 2, 3, 4, 5]
# 列表长度也就是元素个数
print(len(list1))
# 求最大值
print(max(list1))
# 求最小值
print(min(list1))
# 求和
print(sum(list1))
# 转换为list
str1 = "i study python"
print(list(str1))
print(list(str1.split(" ")))
# 查找列表指定值的个数
print(list1.count(1))
5
5
1
15
['i', ' ', 's', 't', 'u', 'd', 'y', ' ', 'p', 'y', 't', 'h', 'o', 'n']
['i', 'study', 'python']
1

列表内容添加

  • append末尾追加
  • insert指定位置之前添加
list1 = [1, 2, 3, 4, 5]
list1.append(6)
print(list1)
list1 = [1, 2, 3, 4, 5]
list1.insert(0, 0)
print(list1)
[1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5]

列表内容删除

  • del删除见前
  • pop弹出最后一个元素,并返回
  • remove删除列表中某个值
  • clear清空列表所以元素,但内存仍在(java List类似)
list1 = [1, 2, 3, 4, 5]
print(list1.pop())
print(list1)
list1 = [1, 2, 3, 4, 5,"m"]
list1.remove("m")
print(list1)
list1 = [1, 2, 3, 4, 5]
list1.clear()
5
[1, 2, 3, 4]
[1, 2, 3, 4, 5]

数据变换

  • reverse所有数据倒序重存
  • extend后面加上一个列表
list1 = [1, 2, 3, 4, 5]
list1.reverse()
list1 = [1, 2, 3, 4, 5]
list2 = [4,3,2,1]
list1.extend(list2)

列表的拷贝和浅拷贝

  • 赋值(传址)和浅拷贝(传值)区别
# python中赋值表示共同管理一份数据
list1 = [1, 2, 3, 4, 5]
list2 = list1
list2.pop()
print(list2)
print(list1)
# 拷贝则是把值拿过来重新分配内存
list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()
list2.pop()
print(list2)
print(list1)
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]

深拷贝和浅拷贝区别(浅拷贝只拷贝一层内容)

#浅拷贝表现
list1 = [1, 2, 3, 4, 5, [20, 30]]
list2 = list1.copy()
print(id(list1))
print(id(list2))
print(id(list1[5]))
print(id(list2[5]))
list1[5][0] = 40
print(list1)
print(list2)
2113088386688
2113088387904
2113088387648
2113088387648
[1, 2, 3, 4, 5, [40, 30]]
[1, 2, 3, 4, 5, [40, 30]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周先森爱吃素

你的鼓励是我坚持创作的不懈动力

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

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

打赏作者

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

抵扣说明:

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

余额充值