一、序列
【成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。】
- 序列数据类型包括:字符串、列表、和元组类型。
- 特点: 都支持下面的特性
索引与切片操作符
成员关系操作符(in , not in)
连接操作符(+) & 重复操作符(*)
二、列表
数组: 存储同一种数据类型的集和。scores=[12,95.5]
列表(打了激素的数组): 可以存储任意数据类型的集和。
1.列表的创建
2.列表的基本特性
1)连接操作符和重复操作符
print([1,2]+[5,2,0])
print([1,2]*3)
2)成员操作符(in, not in)
3)索引
4)切片
5)for循环
3.列表的常用方法
1). 增加
1-1). 追加
li = [1, 2, 3]
li.append(4)
print(li)
1-2). 在列表开头添加
li = [1, 2, 3]
li.insert(0, 'cat')
print(li)
1-2). 在索引2前面添加元素cat
li = [1, 2, 3]
li.insert(2, 'cat')
print(li)
1-3). 一次追加多个元素
li = [1, 2, 3] # 添加4, 5, 6
li.extend([4, 5, 6])
print(li)
2). 修改
通过索引和切片重新赋值的方式。
li = [1, 2, 3]
li[0] = 'cat'
li[-1] = 'westos'
print(li)
li = [1, 2, 3]
li[:2] = ['cat', 'westos']
print(li)
3). 查看
通过索引和切片查看元素。 查看索引值和出现次数。
li = [1, 2, 3, 1, 1, 3]
print(li.count(1)) # 3
print(li.index(3)) # 2
4). 删除
4-1). 根据索引删除
li = [1, 2, 3]
将pop方法的结果存储到delete_num变量中。
delete_num = li.pop(-1)
print(li)
print("删除的元素是:", delete_num)
4-2). 根据value值删除
li = [1, 2, 3]
li.remove(1)
print(li)
4-3). 全部清空
li = [1, 2, 3]
li.clear()
print(li)
5). 其他操作
li = [18, 6, 99, 56]
li.reverse() # 类似于li[::-1]
print(li)
sort排序默认由小到大。 如果想由大到小排序,设置reverse=True
li.sort(reverse=True)
print(li)
li1 = li.copy()
print(id(li), id(li1))
例题:
编写一个云主机管理系统:
- 添加云主机(IP, hostname,IDC)
- 搜索云主机(顺序查找)
- 删除云主机
- 查看所有的云主机信息
from collections import namedtuple
menu = “”"
云主机管理系统
1). 添加云主机
2). 搜索云主机(IP搜索)
3). 删除云主机
4). 云主机列表
5). 退出系统
请输入你的选择: “”"
思考1.:所有的云主机信息如何存储?选择哪种数据类型存储呢? 选择列表
思考2:每个云主机信息该如何存储?IP, hostname,IDC 选择命名元组
hosts = []
Host = namedtuple('Host', ('ip', 'hostname', 'idc'))
while True:
choice = input(menu)
if choice == '1':
print('添加云主机'.center(50, '*'))
ip = input("ip:")
hostname = input("hostname:")
idc = input('idc(eg:ali,huawei..):')
host1 = Host(ip, hostname, idc)
hosts.append(host1)
print(f"添加{idc}的云主机成功.IP地址为{ip}")
elif choice == '2':
print('搜索云主机'.center(50, '*'))
elif choice == '3':
print('删除云主机'.center(50, '*'))
elif choice == '4':
print('云主机列表'.center(50, '*'))
print("IP\t\t\thostname\tidc")
count = 0
for host in hosts:
count += 1
print(f'{host.ip}\t{host.hostname}\t{host.idc}')
print('云主机总个数为', count)
elif choice == '5':
print("系统正在退出,欢迎下次使用......")
exit()
else:
print("请输入正确的选项")
三、元组
1. 元组的创建
2.元组的基本特性
1) 连接重复和操作符
2) 成员操作符
3) 索引
3.元组的常用方法
4.命名元组的操作
四、is和==的区别
python语言:
==: 类型和值是否相等
is: 类型和值是否相等, 内存地址是否相等
五、深拷贝和浅拷贝
1. 值的引用
nums1 = [1, 2, 3]
nums2 = nums1
nums1.append(4)
print(nums2) # 1, 2, 3, 4
2. 拷贝:浅拷贝和深拷贝
2-1). 浅拷贝
n1 = [1, 2, 3]
n2 = n1.copy() # n1.copy和n1[:]都可以实现拷贝。
print(id(n1), id(n2))
n1.append(4)
print(n2)
2-2). 深拷贝
可变数据类型(可增删改的): list
不可变数据类型:数值,str, tuple, namedtuple
n1 = [1, 2, [1, 2]]
n2 = n1.copy()
n1和n2的内存地址:的确拷贝了
print(id(n1), id(n2))
n1[-1]和n2[-1]的内存地址:
print(id(n1[-1]), id(n2[-1]))
n1[-1].append(4)
print(n2)