1、列表、元组、集合
1)列表
列表-[ ]:无序、可读可写,可村多种数据类型
li = [1, 3, 4, 5, 1]
# ---切片
print(li[::]) # [1, 3, 4, 5]
print(li[:-1]) # [1, 3, 4]
print(li[::-1]) # [5, 4, 3, 1]
print(li[:4]) # [1, 3, 4, 5]
# ---内置方法
print(li.index(1)) # 找寻下标为1的元素
print(li.count(1)) # 对列表中的1元素进行计数
print(li.pop()) # 删除尾元素
li.sort() # 排序列表(字符串按照ASCII编码首字符大小排序)
print(li)
li.reverse() # 逆序列表
print(li)
li.append(1) # 尾增加元素
print(li)
li.insert(0, 1) # 指定下标插入元素
print(li)
li.extend([1, 2, 3]) # 扩展列表
print(li)
li.remove(5) # 指定元素删除
print(li)
li.clear() # 清空列表
print(li)
# 结果
0
2
1
[1, 3, 4, 5]
[5, 4, 3, 1]
[5, 4, 3, 1, 1]
[1, 5, 4, 3, 1, 1]
[1, 5, 4, 3, 1, 1, 1, 2, 3]
[1, 4, 3, 1, 1, 1, 2, 3]
[]
2)元组
元组-():只读,可存多种数据类型
tuple1 = (1,) # 一个元素时这样定义,与数据括号区分
tuple2 = (1, 2, 3, 4, 1)
print(tuple2.count(1))
print(tuple2.index(4))
3)集合
集合-{ }:可读可写、去重
set1 = {1, 3, 4, 5, 6, 1, 3, 4, 5, 6}
print(set1)
set1.remove(6)
print(set1)
set1.pop()
print(set1)
set1.add(6) # 集合尾添加元素
print(set1)
set1.update({5, 6, 7}) # 使用集合自身和其他集合的并集更新集合
print(set1)
set1.clear()
print(set1)
# 结果
{1, 3, 4, 5, 6}
{1, 3, 4, 5}
{3, 4, 5}
{3, 4, 5, 6}
{3, 4, 5, 6, 7}
4)相关考点题
- 将两个列表[1,5,7,9],[2,2,6,8]合并为[1,2,2,5,6,7,8,9]
- a = [1,2,3,4,5,6], a[::-3]的结果
- 列表去重再排序
- s='ajldjlajfdljfddd' 去重并从小到大排序
# 1、将两个列表[1,5,7,9],[2,2,6,8]合并为[1,2,2,5,6,7,8,9]
li = [1, 5, 7, 9] + [2, 2, 6, 8]
# li = [1, 5, 7, 9]
# li.extend([2, 2, 6, 8])
li.sort()
print(li)
# 2、a = [1,2,3,4,5,6], a[::-3]的结果
a = [1, 2, 3, 4, 5, 6]
print(a[::-3]) # 倒序切片,步长为3,则从右开始切片,隔两个元素切一个元素
# 3、列表去重再排序
li2 = [1, 5, 2, 3, 2, 5, 1]
li2 = list(set(li2))
li2.sort()
print(li2)
# 4、s='ajldjlajfdljfddd' 去重并从小到大排序
s='ajldjlajfdljfddd'
s=list(set(s))
s.sort()
s = ''.join(s)
print(s)
2、可变类型和不可变类型
1、不可变类型
整型,浮点型,字符串,布尔类型,元组
x = 10
x = 20
print(x) # 20
如图:
x=10:在内存中开辟一个内存空间0000 0001存储值10,然后x指向0000 0001
x=20: 在内存中开辟一个内存空间0000 0001存储值20, 然后x指向0000 0002
最后print(x) 打印出20,而0000 0001没有变量指向,变成垃圾回收
s = 'abcd'
new_s = s.upper()
print(new_s) #ABCD
print(s)
如图:
s='abcd':在内存中开辟一块空间0000 0003存储值abcd ,s指向0000 0003
new_s=s.upper():从内存0000 0003中取出值abcd转换为ABCD后,开辟一个内存空间0000 0004存储ABCD,并将0000 0004内存地址返回,new_s指向0000 0004
最后print(new_s)打印new_s出ABCD, print(s)打印出abcd
2、可变类型
列表、字典
li = [2, 1, 3]
如图:
li = [2, 1, 3]:开辟三块存储空间0000 0006,0000 0007,0000 0008 存储2,1,3(这三块空间可以是无序的),然后开辟一块空间0000 0005 存储三个索引值0,1,3,三个索引值分别存储0000 0006,0000 0007,0000 0008三块地址,然后li指向0000 0005
li[0] = 100
print(li) # [100, 1, 3]
如图
li[0] = 100 :开辟存储空间0000 0009存储值100, 使得li指向的0000 0005地址中索引0存储的值为0000 0009
所以print(li) 打印[100, 1, 3]
li.append(4)
print(li) # [100, 1, 3, 4]
li.sort()
print(li) # [1, 3, 4, 100]
li.append(4): 开辟一块内存空间存储4,然后li指向的0000 0005地址添加一个索引,该索引存储的值为4的存储空间
li.sort() :改变索引存储地址的值,进行排序
1)列题1
l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1[0] = 100
print(l1)
print(l2)
# 结果
[100, 2, 3]
[4, 5, [100, 2, 3]]
l2 = [4, 5, l1] :l2[2]索引存储的为l1的存储地址,而l1中的三个索引分别又存储着值1,2,3的地址
l1[0] = 100 :将l1[0]索引中存储的值变为值100的地址,而l2[2]依旧存储l1的地址
2)例题2
l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1 = [8, 9, 10]
print(l1)
print(l2)
# 结果
[8, 9, 10]
[4, 5, [1, 2, 3]]
l1 = [1, 2, 3] : l1变量指向地址00000001,00000001中有三个索引分别存储三个地址,三个地址分别存储1,2,3
l2 = [4, 5, l1]:l2 指向地址2,地址2中有三个索引存储值三个地址,即l2[2]存储00000001,00000001存储[1,2,3]
l1 = [8, 9, 10]:现在l1重新指向0000 0002,但l2依旧指向00000001
所以打印
[8, 9, 10]
[4, 5, [1, 2, 3]]
l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1 = [8, 9, 10]
l2[2] = l1
print(l1)
print(l2)
# 结果
[8, 9, 10]
[4, 5, [8, 9, 10]]
3)例题3
li = [1, 2, 3]
d = {'a': li}
li = [4, 5, 6]
print(d) # {'a': [1, 2, 3]}