Python中的列表与元组

本文介绍了Python中的序列类型,包括字符串、列表和元组,详细阐述了它们的特点和操作,如索引、切片、连接、成员关系等。重点讨论了列表的创建、修改、查看、删除等方法,并展示了如何使用命名元组存储云主机信息。同时,讲解了元组的基本特性和操作,以及is和==的区别。最后,提到了浅拷贝和深拷贝的概念及其在数据管理中的应用。
摘要由CSDN通过智能技术生成

一、序列

【成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。】

  • 序列数据类型包括:字符串、列表、和元组类型。
  • 特点: 都支持下面的特性
    索引与切片操作符
    成员关系操作符(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)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值