Python中的列表,元组和字典

2023-05-16

一.列表:

数组:存储同一种数据类型的集合 score=[12,13,14]
列表(被称为打了激素的数组):可以存储任意数据类型的集合(一个变量中可以存储多个信息)
#列表里面也可以嵌套列表(列表也是一种数据类型)

1.列表的特性:

索引
print service[0]
print service[-1]


切片
print service[::-1] #列表的翻转
print service[1:]  #除了第一个元素的其他元素
print service[:-1]  #除了最后一个元素的其他元素


重复
print service * 3


连接
print service + service1


成员操作符
print 'firewalld' in service
print 'firewaldd' not in service

#显示的是True和False


for循环遍历
print '显示服务'.center(50,'*')
for se in service
print se

列表中嵌套列表
索引
例如:
service = [['http',80],['ssh',22],['ftp',21]]
print service[0][1]


切片
例如:
print service[:][1]
print service[:-1][0]
print service[0][:-1]

2.列表的增加:

方法一:print service + ['firewalld']


方法二:service.append('firewalld')
                 print service
#append:追加,追加一个元素到列表的结尾


方法三:service.extend(['mysql','firewalld'])
#extend:拉伸,追加多个元素到列表的结尾


方法四:service.insert(1,'samab')
#insert:插入,在制定索引位置添加元素

3.列表的删除:

方法一:print service.pop()  
      print service.pop(0)  #传递索引值
#如果pop()不传递值的时候,默认弹出最后一个元素

方法二:service.remove('ssh')
#remove:删除指定元素

方法三:del service
#del:是一个关键字,从内存中删除整个列表

4.列表的修改:

方法一:service[0] = 'mysql'
print service
#通过索引,重新赋值

方法二:service[:2] = ['XX','YY'] #把列表的前两个元素替换成XX和YY
print service
#通过切片

5.列表的查看:

方法一;print service.count('XX')
查看列表中XX元素出现的次数

方法二:print service.index('XX')
查看指定元素的索引值(最小)

6.列表的排序

方法一:service.sort()
                 print service

#按照Ascii码进行排序,先排大写字母再排小写字母


方法二:service.sort(reverse=True)
               print service

##按照Ascii相反的顺序进行排序


方法三:service.sort(key=str.lower)或service.sort(key=str.upper)
                 print service

#排序时不区分大小写


方法四:random.shuffle(service)
                 print service

#将原有的列表顺序打乱
将生成的随机数排序;
import random
li = list(range(10))v
print li

练习:
1.用户管理系统

1).系统里有用户,用户有密码
    users = ['root', 'westos']
    passwds = ['123', '456']
2).用户登陆(判断登陆是否成功)
   (1)判断用户是否存在
   (2)如果存在:
        判断用户密码是否正确:先找出用户对应索引,
        然后根据passwds【索引值】
        如果正确:登陆成功,退出
        如果不正确:重新登陆,(机会只有三次)
   (3)如果不存在:
        重新登陆(机会只有三次)

users = ['root', 'westos']
passwds = ['123', '456']

for i in range(3):
    user = raw_input("用户名:")
    passwd = raw_input("密码:")
    i += 1
    if user in users:
        index1 = users.index(user)  # 找到用户对应索引值
        index2 = passwds[index1]
        if index2 == passwd:
            print '登陆成功'
            break
        else:
            print '密码错误,你还有%d次机会' % (3 - i)
    else:
        print '没有该用户,你还有%d次机会' % (3 - i)
else:
    print '请稍后再试'

 

2.后台管理前台会员信息

1).后台管理员只有一个用户:admin 密码:admin
2).当管理员登陆成功后,才可以管理用户信息
3).管理用户信息包括:
    添加用户信息
    删除用户信息
    查看用户信息
    退出

print '管理员登陆'.center(50, '*')
inuser = raw_input('UserName:')
inpasswd = raw_input('Password:')

# 现存用户名和密码
users = ['root', 'westos']
passwds = ['123', '456']

if inuser == 'admin' and inpasswd == 'admin':
    print '管理员登陆成功'
    print '用户信息管理'.center(50, '*')

    while True:
        print """
        1 -添加用户信息
        2 -删除用户信息
        3 -查看用户信息
        4 -退出
        """
        choice = raw_input('请选择:')

        if choice == '1':
            print '添加用户信息'.center(50, '*')
            add_user = raw_input('添加用户:')
            if add_user in users:
                print '用户%s已经存在' % add_user
            else:
                add_passwd = raw_input('请输入密码:')
                # 把用户名和密码添加到列表中
                users.append(add_user)
                passwds.append(add_passwd)
                print '添加用户%s成功' % add_user

        elif choice == '2':
            print '删除用户信息'.center(50, '*')
            del_user = raw_input('删除用户:')
            if del_user in users:
                index = users.index(del_user)
                users.remove(del_user)
                passwds.pop(index)
                print '删除用户%s成功' % del_user

        elif choice == '3':
            print '查看用户信息'.center(50, '*')
            print '\t用户名\t密码'
            i = 0
            length = len(users)
            while i < length:
                print '\t%s\t%s' % (users[i], passwds[i])
                i += 1
        elif choice == '4':
            print '谢谢使用!'
            exit()

        else:
            print '请输入正确选项'

else:
    print '管理员登陆失败!'

 

二.元组(tuple,带了紧箍咒的列表):

元组本身是不可变数据类型,没有增删改查,元组内可以存储任意数据类型。
t = (1,2.0,'star')
##元组内包含可变数据类型时可以间接修改元组的内容
##组中只有一个元素时,后面一定要加逗号,否则数据类型不确定

1.元组的特性:
索引:
print t[0]
peint t[-1]


切片:
print t[:-1]
print t[::-1]


重复:
print t * 次数


连接:
print t + ('s1','s2')

成员操作符:
print 's1' in t

2.元组的应用场景:

变量交换数值:
b,a = a,b
#先把(a,b)封装成了一个元组(1,2)
例如:

打印变量值:
例如:

元组的赋值:
有多少个元素,就用多少个变量接收
例如:

元组的排序:
t= sorted(元组名)
例如:

 

三.集合(set):

集合里面的元素是不可重复的
s = {1,2,3,4,5}
print s,type(s)

1.定义一个空集合:

s = set([])

2.集合的应用:

给列表去重:
l = [数字,数字]
print list(set(l))

3.集合的特性:

不支持索引,切片和重复
只支持成员操作符和for循环
成员操作符:print l in s


for循环:for i in s:
               print i

4.集合的常用方法:

增加:
s.add(新元素)


增加多个元素:
s.update({元素一,元素二})


删除:
s.pop()  #删除排序后的第一个元素


删除指定元素:
s.remove(指定元素)   #删除指定元素


交集并集和差集:
例如:
s1={1,2,3}
s2={2,3,4}
print '并集:',s1.union(s2)
print '并集:',s1 | s2
print '交集:',s1.intersection(s2)
print '交集:',s1 & s2
print '差集:',s1.difference(s2)  #可以理解为s1中有哪些s2中没有的元素
print '差集:',s1-s2
print '对等差分:',s1.symmetric_difference(s2)
print '对等差分:',s1^s2

子集和超集:
子集:print s1.issubset(s2)
超集:print s1.issuperset(s2)
#超集:s1中的每一个元素都在s2中,且s2中可能包含s1中没有的元素,则s2是s1的一个超集

不相交集:
print s1.isdisjoint(s2)

四.字典:

字典是一个无序的数据集合,用print输出字典的时候,通常输出顺序和定义顺序不同
方法一:
m = {
    'name':'sun',
    'age':18,
    'height':180
}

##key:value


方法二:
s = {
    'name':['sun','bo','ya'],
    'age':['18','13','20']
}

方法三:
d = dict(a=1,b=2)

1.字典的特性:

成员操作符:
##默认判断key值是否存在
print 'a' in d
print '1' in d

for循环:
##默认循环遍历字典的key值


方法一:for k,v in d.items():
                 print k,'-->',v

方法二:for k in d:
                 print k,'-->',d[k]

2.字典的增加或更改key-value对:

增加或更改单个:d['key'] = value


增加或更改多个:d.update({'key1':value1,'key2':value2})


增加或更改单个d.setdefault('key',value)
##key存在时做更改,key不存在时做增加

3.字典的删除:

方法一:
d.pop('key')
#弹出指定key-value值

方法二:
d.popitem()
#弹出第一个

方法三:
del d['key']
#删除指定key-value值

4.字典的查看:

查看所有key值:print d.keys()
查看所有value值:print d.values()
查看所有key-value值:print d.items()

5.查看:

print d.get('key')
#方法获取指定key对应的value值,如果key值存在则返回对应的value值,如果不存在,默认返回none,如果需要返回指定值,传回即可print d.get('key','返回的语句')

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的列表,元组和字典 的相关文章

  • 制作Ubuntu启动盘并安装ros的学习笔记

    本菜鸡刚开始学习ros xff0c 之前一直用虚拟机 xff0c 但但是配置极其麻烦 xff0c 容易出现各种错误 xff0c 对新手极其不友好 亲测做一个Ubuntu的启动盘很是稳定 为了后续学习时回看 xff0c 记录一下遇到的问题以及
  • Ubuntu22.04没有ttyUSB(无法访问 ‘/dev/ttyUSB‘: 没有那个文件或目录)问题解决

    无法访问 dev ttyUSB 没有那个文件或目录 环境 xff1a ubuntu22 04 xff0c 使用需求为USB转串口 问题描述 在给串口读写权限时 xff0c 出现问题 xff1a 无法访问 dev ttyUSB0 没有那个文件
  • 光流(optical flow)基础概念以及典型算法

    光流 xff08 optical flow xff09 基础概念以及典型算法 文章目录 光流 xff08 optical flow xff09 基础概念以及典型算法什么是光流 xff1f 一 传统经典光流算法 xff1a Lucas Kan
  • PX4无人机安装问题及解决方案

    文章目录 1 git clone1 git clone fatal error2 PX4源码下载很慢 2 ROS安装1 设置密钥2 xff09 E 无法定位软件包 ros melodic desktop full3 sudo apt ins
  • 玩转k8s(四)—— 通过Service访问Pod

    我们不应该期望k8s Pod是健壮的 xff0c 而是要假设Pod中的容器很可能因为各种原因发生故障而死掉 Deployment等Controller会通过动态的创建和销毁Pod来保证应用整体的健壮性 换句话说 xff0c Pod是脆弱的
  • STM32之IO模拟串口篇

    概述 xff1a 硬件 xff1a 基于stm32f767igt6水星板开发 xff1b 软件 xff1a 使用了RT Thread实时操作系统 xff0c 两个空闲IO口 PE2用作串口TX端 xff0c 搭配一个定时器控制发送时序 xf
  • BPMN2.0 任务-脚本任务

    描述 脚本任务 script task 是自动执行的活动 当流程执行到达脚本任务时 会执行相应的脚本 脚本任务用左上角有一个小 脚本 图标的标准BPMN 2 0任务 圆角矩形 表示 脚本任务使用script与scriptFormat元素定义
  • 最短路径问题——基于Dijkstra算法和Floyd算法的最短路径问题

    目录 1 算法介绍 xff08 1 xff09 Dijkstra Algorithm xff08 迪杰斯特拉算法 xff09 xff08 2 xff09 Floyd Algorithm xff08 佛洛依德算法 xff09 xff08 3
  • 2.1.2 进程的状态与转换

    目录 知识总览 1 三种基本状态 xff08 1 xff09 运行态 xff08 Running xff09 xff08 2 xff09 就绪态 xff08 Ready xff09 xff08 3 xff09 阻塞态 xff08 Waiti
  • 合并排序与快速排序算法

    文章目录 算法介绍代码实现1 合并排序2 快速排序 总结 算法介绍 合并排序与快速排序是排序算法中常用的两种排序算法 xff0c 合并排序把数据分为两段 xff0c 从两段中逐个选最小的元素移入新数据的末尾 xff1b 快速排序是在序列中挑
  • 2进制、8进制、10进制、16进制相互转换

    文章目录 介绍1 二进制转其他进制2 八进制转其他进制3 十进制转其他进制4 十六进制转其他进制总结 介绍 百度百科 xff1a 进制也就是进位计数制 xff0c 是人为定义的带进位的计数方法 xff08 有不带进位的计数方法 xff0c
  • Hadoop学习笔记--HBase相关操作指令

    文章目录 引言0 HBase的启动与停止1 创建表2 删除表3 表的其他操作3 1 修改表结构3 2 查看表结构3 3 显示所有用户定义的表3 4 查询表是否存在3 5 查询表是否可用3 6 查询表中记录数 4 插入数据4 1 插入单条数据
  • Hadoop学习笔记--MapReduce

    文章目录 引言1 经典案例分析 xff1a WordCount1 1 Map阶段 xff1a TokenizerMapper类1 2 Reduce阶段 xff1a IntSumReduce类1 3 Driver阶段 xff1a main x
  • Hadoop学习笔记--YARN

    文章目录 引言1 YARN的优势1 1 可扩展性 xff08 Scalability xff09 1 2 可用性 xff08 Availability xff09 1 3 利用率 xff08 Utilization xff09 1 4 多租
  • scala编程--计算级数&统计学生成绩

    目录 案例1 xff1a 计算级数1 1 案例要求1 2 实现代码 案例2 xff1a 统计学生成绩1 1 案例要求1 2 实现代码 总结 案例1 xff1a 计算级数 1 1 案例要求 级数计算函数实现较为简单 xff0c 这里不再赘述
  • RDD本地文件系统读入显示文件不存在fileNotExit

    问题 在从本地文件系统读入数据创建RDD时 xff0c 执行行动操作 xff0c 显示文件不存在 解决方案 从本地文件系统读入时 xff0c 需在所有节点的相同目录下存在该文件 xff0c 如读取文件在 file span class to
  • spark-shell报错:java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to

    目录 问题报错信息原因解决方案 问题 spark shell在执行一段时间后报错 xff1a java io IOException Failed to replace a bad datanode on the existing pipe
  • DPDK-VPP 学习笔记-06 bond 链路聚合 LACP

    DPDK VPP 学习笔记 06 bond 链路聚合 LACP 本笔记主要测试VPP与交换机链路聚合配置 amp 状态 Switch HW CE6880NIC Mellanox CX5 链路聚合简介 以太网链路聚合 Eth Trunk 简称
  • 基于Linux的小项目-在线词典

    接触到的基于Linux的第一个实战小项目 xff0c 在众多大牛的协助下完美实现 在线词典功能的实现 1 用户的注册 2 用户登录 3 单词的查询 4 历史记录的查看 5 用户在登录后修改密码 头文件 span class token ma
  • 树莓派串口通信(C语言wiringPi库)

    串口通信 配置gpio串口wringPi库串口函数代码测试 配置gpio串口 开启gpio串口 输入命令sudo raspi config选择Interfacing找到serial并打开选择OK 树莓派包含两个串口 硬件串口 xff08 d

随机推荐