第5章-组合序列类型

news2024/11/13 15:05:14
#全部是重点知识,必须会。
了解序列和索引|的相关概念
掌握序列的相关操作
掌握列表的相关操作
掌握元组的相关操作
掌握字典的相关操作
掌握集合的相关操作

1,序列和索引

1,序列是一个用于存储多个值的连续空间,每一个值都对应一个整数的编号,称为 索引

image.png

2,属于序列结构的还有列表,元组,集合和字典。

  • 列表和元组称为有序序列
  • 集合和字典称为无需序列
#正向递增
s='helloworld'
for i in range(0,len(s)):
    print(i,s[i],end='\t\t')  #\t不换行输出
print('\n--------------')
#反向递减
for i in range(-10,0):
    print(i,s[i],end='\t\t')  #\t不换行输出

切片

  • 省略1。默认从0开始。
  • 省略1,2
  • 省略1,3
  • 省略2。默最后一个元素包含最后一个。
  • 省略2,3
  • 省略3。默认步长为1.
  • 省略1,2,3
s='helloworld'
#切片操作
s1=s[0:5:2]
print(s1)
#如果省略start,默认从0开始。
print(s[:5:2])

#省略start和end
print(s[::2])
#step为-1	逆序序列***
print(s[::-1])
print(s[-1:-11:-1])

#省略start和step。
print(s[:5:])

#省略end,默认到序列的最后一个元素(包含最后一个元素)
print(s[0::1])

#省略end和step,
print(s[5::])
print(s[5:])

#全省略就都打印
print(s[::])

#更改step
print(s[0:5:2])

序列

image.png

#序列的相加
print('*'*10)
print('hello'+'world')
#x in s的使用
s='helloworld'
print('l是在s中存在吗?',('l' in s))
print('k是在s中存在吗?',('k' in s))
#x not in s的使用
print('l是在s中存在吗?',('l'not in s))
print('l是在s中存在吗?',('k'not in s))
#内置函数
print(len(s))#len:列出元素的个数
print(max(s))#按照ACSII码计算
print(min(s))
#序列的相关方法
print('s.index',s.index('o'))
print('s.index',s.index('l'))
print('s.count',s.index('l'))

2,列表

  • 是指一系列的按特定顺序排列的元素组成。
  • 是Python中内置的可变序列
  • 在Python中使用[]定义列表,元素与元素之间使用英文的逗号分隔
  • 列表中的元素可以是任意的数据类型
  • 字符串是不可变序列。
#(1)用 []直接创建列表
#语法:
列表名=[element1,element2...]

#(2)用内置函数list()创建列表
#语法:
列表名=list(序列)

#列表的删除
#语法:
del 列表名
#直接使用[]创建列表
lst=['python','hello',888,3.14]
print(lst)

#内置函数list()创建列表
lst2=list('pythonpyhton')
lst3=list(range(1,10,2))
print(lst2)
print(lst3)

#列表是序列中的一种,对序列的操作,运算符,函数均可以使用
print(lst3+lst2)
print(lst3*3)
print(max(lst3))
print(min(lst3))
print(len(lst))

print(lst2.index('y'))
print(lst2.count('o'))

#列表的删除
lst4=[10,20,30]
del lst4

enum函数

image.png

列表的遍历操作有三种:

  • for循环
  • for循环+索引
  • enumerate
lst=['hello','linux','python','world']
#使用遍历循环for遍历列表元素
for item in lst:
    print(item)

#使用for循环,range函数,len函数,根据索引遍历
for i in range(0,len(lst)):
    print(i,'--->',lst[i])

#enumerate函数
for index,item in enumerate(lst):
    print(index,item)
print('\n----------')
#手动修改序列号的起始值
for index,item in enumerate(lst,start=1):
    print(index,item)

列表类型

image.png

lst=['hello','linux','python','world']
print('原列表',lst,id(lst))
lst.append(100)
print('附加后',lst,id(lst))
lst.insert(2,'mysql')
print('指定增加',lst,id(lst))
lst.pop(1)  #这个1是索引
print('先取后删',lst,id(lst))
# lst.remove('linux')
# print('指定删除',lst,id(lst))
lst.reverse()
print('反转后',lst,id(lst))
# lst.clear()
# print('全清后',lst,id(lst))
new_lst=lst.copy()  #会产生新列表对象
print(lst,id(lst))
print(new_lst,id(new_lst))

#list的修改操作
lst[1]='mysql'
print(lst)

列表排序

image.png

lst=[1,5,8,10,6,88,3.14]
print('原列表',lst)
lst.sort()
print('升序',lst)
lst.sort(reverse=True)
print('降序',lst)
print('-'*30)
lst2=['a','d','c','B']
print('原列表',lst2)
#忽略大小写。升序排序,先排大写,再排消写。降序反之
lst2.sort(key=str.lower)
print('升序',lst2)
print('-'*30)
#sorted内置函数会产生新列表对象
lst=[1,5,8,10,6,88,3.14]
print('原列表',lst)
#sorted内置函数会产生新列表对象
asc_lst=sorted(lst)
print('升序',asc_lst)
desc_lst=sorted(lst,reverse=True)
print('降序',desc_lst)

列表生成式

image.png

import random   #随机导入数字
lst=[item for item in range(1,11)]
print(lst)

lst=[item*item for item in range(1,11)]
print(lst)

#random.randint()的用法:用于生成一个指定范围内的随机整数
lst=[random.randint(1,100) for item in range(10)]
print(lst)

#从列表中选择符合条件的元素组成新的列表
lst=[i for i in range(10) if i%2==0]
print(lst)

image.png

#创建二维列表
lst=[
    ['城市','环比','同比'],
    ['北京',100,101],
    ['上海',102,103],
    ['深圳',104,105]
]
print(lst)
#遍历二维列表使用双层for循环
for row in lst:     #行
    for item in row:    #列
        print(item,end='\t')
    print()
#列表生成式生成一个4行5列的二维列表
lst2=[[j for j in range(5)] for i in range(4)]
print(lst2)

3,元组

  • 是内置的不可变序列
  • 是python中使用()定义元组,element直接用英文的逗号隔开
  • 元组中只有一个元素的时候,逗号也不能省略

image.png

#使用小括号创建元组
t=('hello',[10,20,30],'python','linux',50)
print(t)

#使用内置函数tuple创建元组
t=tuple('helloworld')
print(t)

t=tuple([10,20,30])
print(t)

#在序列中的应用
print('2在tuple中是否存在:',(10 in t))
print('2在tuple中是否存在:',(10 not in t))
print('min:',min(t))
print('max:',max(t))
print('t.index:',t.index(10))
print('t.count:',t.count(10))

#如果元组只有一个element
x=(1)
print(x,type(x))
y=(1,)
print(y,type(y))

#tuple的删除
# del x
# print(x)

遍历

t=('python','hello','world')
#根据索引访问元组
print(t[1])

#元组切片操作
t2=t[:3:2]
print(t2)

#(1)元组的遍历
for item in t:
    print(item)

#(2)使用for+range+len
for i in range(len(t)):
    print(i,t[i])

#使用enumerate
for index,item in enumerate(t):
    print(index,'--->',item)

tuple

#元组也有生成式,只不过元组的生成式是一个生成器对象,需要转换成tuple或list才能查看。
t=(i for i in range(1,4))
print(t)
# t=tuple(t)
# print(t)
# #遍历1
# for item in t:
#     print(item)
#遍历2
print(t.__next__())
print(t.__next__())
print(t.__next__())
#都取完了,如果再打印就为空
t=tuple(t)
print(t)

4,字典

字典类型是根据一个信息查找另一个信息的方式构成了"键值对”,它表示索引|用的键和对应的值构成的成对关系。

字典为可变数据类型。其中键是不可变序列。字符串,整数,浮点,元组可以作为字典中的键,但是列表不行。

image.png

字典类型

image.png

#(1)创建字典
d={10:'cat',20:'dog',30:'pet',20:'zoo'}
print(d)    #key相同时,value值进行了覆盖

#(2)zip函数
lst1=[10,20,30]
lst2=['ls','cd','pwd','cs']
zipobj=zip(lst1,lst2)
print(zipobj)   #<zip object at 0x019AC1C8>
#print(list(zipobj)) #[(10, 'ls'), (20, 'cd'), (30, 'pwd')]
d=dict(zipobj)
print(d)    #{10: 'ls', 20: 'cd', 30: 'pwd'}

#使用参数创建dict
d=dict(cd=1,ls=2)
print(d)    #左侧为key,右侧为value

t=(10, 20,30)
print({t:10}) # t是key, 10是value , 元组是可以作为字典中的key

#字典属于序列
print('max:',max(d))
print('min:',max(d))
print('len:',len(d))    #看的是元素的个数

#删除 
del d

image.png

取值与遍历

image.png

d={'hello':10,'world':20,'python':30}
#访问字典中的元素
#(1)使用d[key]
print(d['python'])
#(2)d.get(key)
print(d.get('hello'))

#二者之间是有区别的,如果key不存在,d[key]报错d.get(key)可以指定默认值
print(d.get('java','不存在'))

#dict遍历
for item in d.items():
    print(item) #key=value组成的一个元素
#在使用for遍历时,分别获取key,value
for key,value in d.items():
    print(key,value)

相关操作

image.png

d={'hello':10,'world':20,'python':30}
print(d)
#添加
d['linux']=40
print(d)

#获取dict中所有的key
key=d.keys()
print(key)
print(list(key))
print(tuple(key))

#获取字典中所有的value
values=d.values()
print(values)
print(list(values))
print(tuple(values))

#如何将字典中的数据转侧灰姑娘键值对的形式,以元组的形式展示
lst=list(d.items())
print(lst)

空字典,空元组,空列表为False

字典生成式

image.png

import random
d={item:random.randint(1,100) for item in range(4)}
print(d)

#创建两个列表
lst1=[1001,1002,1003]
lst2=['hello','world','python']
d={key:value for key,value in zip(lst1,lst2)}
print(d)

5,集合

  • Python中的集合与数学中集合的概念一致
  • Python中的集合是一个无序的不重复元素序列
  • 集合中只能存储不可变数据类型
  • 在Python中集合使用{}定义
  • 与列表、字典一样,是Python中的可变数据类型

集合类型

image.png

#{}直接创建集合
s={10,20,30}
print(s)

#使用set()创建集合
s=set() #创建空集合
print(s)

s={}#创建的是字典
print(s,type(s))

s=set('helloworld')
print(s)

s2=set([10,20,30])
print(s2)

s3=set(range(1,10))
print(s3)
#集合属于序列的一种,可以用序列测试
#max,min,len,in ,not in

#删除
del s3

操作符

image.png

A={10, 20,30, 40, 50}
B={30, 50,88, 76, 20}
print(A&B)

相关操作

image.png

A={10, 20,30, 40, 50}
#A.add(100)
#A.remove()
# A.clesr
# print(A)

#集合遍历
for item in A:
    print(item)

for index,item in enumerate(A):
    print(index,'-->',item)
    pass

#生成式
s={i for i in range(1,10)}
print(s)

s={i for i in range(1,10) if i%2==1}
print(s)

image.png

6,练习题

image.png

image.png

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python实现建议股票计算器

name 无忧传播 stock_price 19.99 stock_code "003032" stock_rise 1.2 day 7print(f"公司&#xff1a;{name},代码&#xff1a;{stock_code},当前股价&#xff1a;{stock_price}")print("增长系数是&#xff1a;%f&#xff0c;经过%d天后&am…

Git本地仓库的搭建与使用

目录 一、前言 二、Linux下搭建 git 仓库 三、Windows下搭建 git 仓库 一、前言 做项目时&#xff0c;我们常常需要将自己的代码进行托管&#xff0c;但有时候 Github 的速度属实叫人流泪。有的人会选择 Gitee 等进行托管代码&#xff0c;这当然是可以的。那如果没有其他代码…

【VUE基础】VUE3第一节—vite创建vue3工程

什么是VUE Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0…

藏汉翻译通作为翻译软件的优势有哪些?

藏汉翻译通作为一款专业的藏汉双语翻译软件&#xff0c;具有以下优势&#xff1a; 人工智能技术应用&#xff1a;藏汉翻译通利用了人工智能翻译和语音识别合成技术&#xff0c;提供智能藏文翻译服务。 高准确率&#xff1a;文字识别准确率可达90%&#xff0c;语音识别转化文字…

IDEA新建项目并撰写Java代码的方法

本文介绍在IntelliJ IDEA软件中&#xff0c;新建项目或打开已有项目&#xff0c;并撰写Java代码的具体方法&#xff1b;Groovy等语言的代码也可以基于这种方法来撰写。 在之前的文章IntelliJ IDEA社区版在Windows电脑中的下载、安装方法&#xff08;https://blog.csdn.net/zheb…

Echarts水球图(liquidFill)添加文字

效果 代码 {type: liquidFill,shape: shapes[0].value,radius: 90%,data: [{name: 独立百货,value: 0}],center: [50%, 50%],color: [{type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: #446bf5},{offset: 1,color: #2ca3e2}],globalCoord: false}],backgro…

混合贪心算法求解地铁线路调度

一、问题描述 城市轨道交通的繁荣发展&#xff0c;带来了车辆资源需求的日益增加。如何兼顾运营服务水平和运营成本&#xff0c;以最少的车底优质地完成运输任务成为一大严峻问题。本题在后续的描述中将由多辆动车和拖车组合而成的车组称为车底。在日常的运营组织中&#xff0…

算力狂飙|WAIC 2024上的服务器

7月7日&#xff0c;2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;在上海落下帷幕。这场备受瞩目的AI盛宴与热辣夏日碰撞&#xff0c;吸引了全球科技、产业及学术界的广泛关注&#xff0c;线下参观人数突破30万人次&#xff0c;线上流量突…

DOM(文档对象模型)生命周期事件

前言 DOM 生命周期事件涉及到从创建、更新到销毁 DOM 元素的不同阶段。 ● 我们来看下当HTML文档加载完再执行JavaScript代码 document.addEventListener(DOMContentLoaded, function (e) {console.log(HTML parsed adn DOM tree built!, e); })● 除此之外&#xff0c;浏览…

Linux | 安装lb-toolkits 1.2.4库

Linux | 安装 lb-toolkits 最近又需要下载葵花的数据&#xff0c;之前分享过一次代码。今天发现之前的环境不小心被我删了&#xff0c;而运行相关的代码需要安装lb-toolkits这个库&#xff0c;今天正好记录了一下安装lb-toolkits的过程。 这里安装的版本是1.2.4&#xff0c;别…

【前端从入门到精通:第十二课: JS运算符及分支结构】

JavaScript运算符 算数运算符 关于自增自减运算 自增或者自减运算就是在本身的基础上进行1或者-1的操作 自增或者自减运算符可以在变量前也可以在变量后&#xff0c;但是意义不同 自增自减运算符如果在变量前&#xff0c;是先进行自增或者自减运算&#xff0c;在将变量给别人用…

基于springboot+vue实现的厨艺交流平台(文末源码+Lw)093

93基于SpringBootVue的实现的厨艺交流平台&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 系统功能&#xff1a; 这次开发的厨艺交流平台功能有个人中心&#xff0c;食材分类管理&#xff0c;用户管理&#xff0c;菜品分类管理&#xff0c;菜谱信…

力扣第一题

1. 两数之和 提示 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可…

CSS技巧专栏:一日一例 2.纯CSS实现 多彩边框按钮特效

大家好,今天是 CSS技巧一日一例 专栏的第二篇《纯CSS实现多彩边框按钮特效》 先看图: 开工前的准备工作 正如昨日所讲,为了案例的表现,也处于书写的习惯,在今天的案例开工前,先把昨天的准备工作重做一遍。 清除浏览器的默认样式定义页面基本颜色设定body的样式清除butt…

深入理解 Qt 的 `moveToThread`:提升多线程应用性能的关键

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

选择排序(C语言版)

选择排序是一种简单直观的排序算法 算法实现 首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小&#xff08;大&#xff09;元素&#xff0c;然后放到已排序序列的末尾。 重复第二步&…

CTF php RCE (一)

0x01 引言 首先进入题目 应该是大部分都是一段白盒PHP审计&#xff0c;然后我们为了命令执行&#xff0c;绕过或者是钻空子等等操作&#xff0c;来拿到flag 0x02 基础 0x01 传参方式 这里有两个工具&#xff0c;hackbar和burpsuite,这两个工具非常实用 大家可以自己Googl…

Linux 利用命名空间创建一个自己的“容器“

Linux 利用命名空间创建一个自己的"容器" 前置条件 创建一个目录存放容器mkdir /myapp准备静态编译busybox&#xff0c;操作系统自带的往往是依赖动态库的(本文使用的debian apt install busybox-static) 开始 使用unshare起一个独立命名空间.# 进入后/myapp目录…

办公助手推荐✨

办公助手来啦&#xff01;✨ 办公助手来啦&#xff01;✨&#x1f31f; 主要亮点&#x1f4dd; 全新PDF编辑器&#x1f3a8; 丰富的幻灯片版式&#x1f30d; 改进的从右至左显示&#x1f310; 新增本地化选项 &#x1f4ca; 应用场景在线办公套件&#x1f4f1; 多平台支持&…

【YOLO8系列】(二)YOLOv8环境配置,手把手嘴对嘴保姆教学

目录 一. 准备环境 1.Anaconda下载 2.创建yolov8虚拟环境 3.pytorch安装 4.CUDA下载 5.CUDNN下载 二、yolov8模型下载 1.clone模型 2.pycharm配置 ①解释器配置 ②终端配置 3.安装必要库 4.下载训练模型 三、 环境验证 四、总结 YOLOv8 是 YOLO 系列最新的目标…