文章目录

  • 序列
  • 列表
  • 列表的创建
  • 列表的基本特性
  • 连接操作符和重复操作符
  • 成员操作符(in和not in)
  • 索引
  • 切片
  • for循环
  • 列表的常用方法
  • 增加
  • 修改(通过索引和切片重新赋值)
  • 查看
  • 删除
  • 其他操作
  • 元组(和列表相比,不能增删改元素)
  • 元组的创建
  • 元组的特性
  • 常用方法
  • 命名元组namedtuple
  • is和==的区别
  • 练习-云主机管理系统



列表和数组的区别:
数组只能存放同一种数据类型
而列表能存放不同数据类型

元组和列表的区别:
元组不能增删改、其他和列表一样

序列

  • 什么是序列:
    成员是有序排列的,且可以通过下标偏移量访问到它的一个(即索引)或者访问几个成员(即切片),这类类型统称为序列。
  • 序列数据类型包括:字符串、列表和元组、
  • 特点:支持以下特性:
    索引和切片操作符
    成员关系操作符(in 和 not in)
    连接操作符(+)以及重复操作符(*)

数字10是序列吗?不是,数字10,既不能索引也不能切片,所以不是序列

列表

列表的创建

#列表的创建
list=[]
print(list,type(list))
li=[1]
print(li,type(li))

python自带的数据有哪些_python

列表的基本特性

连接操作符和重复操作符

print([1,2] + [2,3]) #[1,2,2,3]
print([1,2] * 3) #[1,2,1,2,1,2]

python自带的数据有哪些_运维_02

成员操作符(in和not in)

print(1 in [1, 2, 3])  # true
# bool类型中:True也表示为1,False也表示为0
print(1 in ["a", True, [1, 2, "z"]])  # True
print(1 in ["a", False, [1, 2, "z"]])  # False
print(0 in ["a", False, [1, 2, "z"]])  # True

python自带的数据有哪些_开发语言_03

索引

list = [1,2,3,[1,'b',3]]
print(list[0]) #1
print(list[2]) #3
print(list[-1]) #[1,'b',3]
print (list[-1][-2]) #b
print(list[3][1]) #b

python自带的数据有哪些_python自带的数据有哪些_04

切片

list=['172','25','254','100']
print(list[:2]) #['172','25']
print(list[1:]) #['25','254','100']
print(list[::-1]) #['100', '254', '25', '172']

#需求:已知['172','25','254','100'],输出100-254-25
print('-'.join(list[3:0:-1])) #方法1
print("-".join(list[1:][::-1]))  #方法2
print("-".join(list[::-1][:3])) #方法3

python自带的数据有哪些_元组_05

for循环

names = ["mary","joe","jack"]
for item in names:
    print(f"姓名是{item}")

python自带的数据有哪些_python自带的数据有哪些_06

列表的常用方法

python自带的数据有哪些_运维_07

增加

#在列表结尾追加
list=[1,2,3]
list.append(4)
print(list) #[1,2,3,4]
# 在列表开头添加
list=[1,2,3]
list.insert(0,'cat')
print(list) #['cat',1,2,3]
# 在某一个索引之前添加
list=[1,2,3]
list.insert(2,'cat') #在索引2前面添加
print(list)
# 依次追加多个元素
list=[1,2,3]
#list.append([4,5,6]) #[1, 2, 3, [4, 5, 6]],, append只能将456作为一个列表添加进去
list.extend([4,5,6])
print(list)

python自带的数据有哪些_元组_08

修改(通过索引和切片重新赋值)

#通过索引直接修改
list=[1,2,3]
list[0]='cat'
print(list)
list[-1]='dog'
print(list)
#通过切片修改
list=['a','b','c']
list[:3]=['cat','dog','pig']
print(list)
list[1:3]=['rabbit','panda']
print(list)

python自带的数据有哪些_python自带的数据有哪些_09

查看

#通过索引和切片查看元素
list=['a','b','c','a','a','c']
print(list[2]) # c
print(list[1:6]) # bcaac
print(list[:2]) #ab
print(list[4:])#ac
#查看元素出现次数和索引值
print(list.count('a')) #3,查看列表中元素a出现的个数
print(list.index('c')) #2 查看列表中元素c的索引,找到第一个之后就返回

python自带的数据有哪些_python_10

删除

#根据索引删除元素
list=['a','b','c','a','a','c']
list.pop(-1) #删除最后一个元素 ['a','b','c','a','a']
list.pop(0) #删除索引为0的元素 ['b','c','a','a']
print(list)
list=[1,2,3]
delete_num=list.pop(0) #将删除的元素存储在变量delete_num中
print('删除的元素是:', delete_num)

#根据value值删除
li=['a','b','c','b','c']
li.remove('c') #将出现的第一个元素c删除
print(li)

#全部清空
li=['a','b','c']
li.clear()
print(li)

python自带的数据有哪些_python_11

其他操作

list=[14,24,5,99]

#reverse翻转函数
list.reverse()  #和list[::-1]类似
print(list)  #[99, 5, 24, 14]

#sort排序函数
list.sort()
print(list) #[5, 14, 24, 99] 由小到大排序
list.sort(reverse=True)
print(list) #由大到小排序

#copy复制函数
li=list.copy()
print(id(li),id(list)) #查看这两个链表的地址
print(li,list) #查看这两个链表的内容

python自带的数据有哪些_python自带的数据有哪些_12

元组(和列表相比,不能增删改元素)

!!!当元组中只有一个元素时,元素后面一定要加逗号

元组的创建

t1 = ()
print(t1, type(t1))  # ()  tuple
t2 = (2)
print(t2, type(t2))  # 2  int型
t3 = (2,)
print(t3, type(t3))  # 2  tuple

t4 = (1, 2.2, True, [1, 2, 3])
print(t4, type(t4))

python自带的数据有哪些_开发语言_13

元组的特性

#连接和重复
t=(1,2,'c')
print(t+('a',))
print(t*3)

#成员操作符
t=(1,2,'hello')
print('hello' in t)
print('hi' not in t)

#索引和切片
t=(1,2,'a','c')
print(t[0]) #1
print(t[-1]) # c
print(t[:2]) #(1,2)
print(t[::-1]) #('c', 'a', 2, 1)

python自带的数据有哪些_运维_14

常用方法

#常用方法:元组是不可变数据类型(不能增删改)
#查看
#通过索引和切片查看
#查看索引值和元素出现次数
t=(1,2,3,'a','b',2)
print(t.count(2)) #2
print(t.index(2)) #1

python自带的数据有哪些_开发语言_15

命名元组namedtuple

对元组中的每个元素都设置了名字,在操作以及读代码的时候更加方便

tu=("li",18, "西安")
print(tu[0],tu[1],tu[2])
#从collections模块中导入namedtuple工具
from collections import namedtuple
#创建命名元组对象User
User=namedtuple('User',('name','age','city'))
#给命名元组传值
user1=User("li",18, "西安")
#打印命名元组
print(user1)
print(user1.name)
print(user1.age)

python自带的数据有哪些_元组_16

is和==的区别

"""
python中:
==用于判断类型和值是否相等
is用于判断类型和值是否相等,内存地址是否相等, is也被叫做同一性运算符
"""
print(1 == '1')  # false 整型不等于字符串
li = [1, 2, 3, 'a']
li1 = li.copy()
print(li1 == li) #True,均为列表,且值相等
print(id(li),id(li1)) #查看内存地址
print(li1 is li) #False, 类型和值相等,但是内存地址不同

python自带的数据有哪些_python自带的数据有哪些_17

练习-云主机管理系统

"""
编写一个云主机管理系统:
    创建云主机(ip, hostname, IDC)
    搜索云主机(顺序查找)
    删除云主机
    查看所有的云主机信息
"""
from collections import namedtuple
menu = """
            云主机管理系统
        1.添加云主机
        2.搜索云主机(IP搜索)
        3.删除云主机
        4.云主机列表
        5.退出系统
请输入你的选择:"""
# 使用列表存储所有主机信息,使用命名元组存储每个主机信息
hosts = []
Host = namedtuple('Host', ('ip', 'hostname', 'idc'))
while True:
    choice = input(menu)
    if choice == '1':
        print('添加云主机')
        ip = input('请输入IP:')
        hostname = input('请输入hostname:')
        idc = input('请输入idc(eg.ali,huawei...):')
        host1 = Host(ip, hostname, idc)
        hosts.append(host1)
        print(f'{idc}云主机{ip},{hostname}添加成功')
    elif choice == '2':
        find_ip = input("请输入要搜索的主机IP:")
        for host in hosts:
            if host.ip == find_ip:
                print(f'IP地址\t\t\t主机名\t\t\t\tidc')
                print(f'{host.ip}\t\t{host.hostname}\t\t\t{host.idc}')
                break
        else:
            print(f'未找到主机{find_ip}')
    elif choice == '3':
        #为什么删除元素会报错显示元素不在列表中的???
        delete_ip = input('请输入要删除的云主机IP:')
        for host in hosts:
            if host.ip == delete_ip:
                hosts.remove(host.ip)
                break
        else:
            print(f'主机{delete_ip}不在列表中')
    elif choice == '4':
        print('云主机列表'.center(50, '*'))
        print(f'\t\tIP地址\t\t\t主机名\t\t\t\tidc')
        count = 0
        for host in hosts:
            count += 1
            print(f'{count}\t\t{host.ip}\t\t{host.hostname}\t\t\t{host.idc}')
    elif choice == '5':
        print('正在退出系统,欢迎下次使用')
        exit()
    else:
        print('请输入正确的数字:')

上述程序删除云主机功能报错,其他功能均正常。但是我不知道错在哪?
先记录下,等之后再完善

python自带的数据有哪些_python_18