【Python】Python中的列表,元组,字典

news2024/11/25 5:31:04

文章目录

  • 列表
    • 创建列表
    • 获取元素
    • 修改元素
    • 添加元素
    • 查找元素
    • 删除元素
    • 列表拼接
    • 遍历列表
    • 切片操作
  • 元组
    • 创建元组
    • 元组中的操作
  • 字典
    • 创建字典
    • 添加/修改元素
    • 删除元素
    • 查找
    • 字典的遍历
    • 合法的key类型

列表

列表是一种批量保存数据的方式,列表使用[]表示

创建列表

  • 创建两个空列表
a = []
print(type(a))
b = list()
print(type(b))

在这里插入图片描述

  • 还可以在创建列表时,给定一些初始值
a = [1, 2, 3]
  • 列表中存放的元素可以是不同类型的
b = [1, 'hello', True, 3.14, [1, 2, 3]]
  • 可以直接使用print函数打印列表
b = [1, 'hello', True, 3.14, [1, 2, 3]]
print(b)

在这里插入图片描述

获取元素

  • 可以通过下标的方式来获取指定位置元素,下标访问符[]
a = [1, 2, 3]
print(a[1])

在这里插入图片描述
注意:下标是从0开始的,也就是0对应第一个元素,1对应第二个元素

  • 如果下标越界,会抛出下标越界异常
a = [1, 2, 3]
print(a[10])

在这里插入图片描述

  • 可以使用len函数获取列表元素的个数
a = [1, 2, 3, 4]
print(len(a))
  • 下标可以是负数,表示倒数第几个元素
a = [1, 2, 3, 4]
# 倒数第一个元素是4
print(a[-1])

修改元素

通过下标的方式可以修改值

a = [1, 2, 3, 4]
# 将倒数第一个元素修改为5
a[-1] = 5
print(a)

在这里插入图片描述

添加元素

  • 使用append方法进行尾插
a = [1, 2, 3, 4, 5]
a.append(6)
a.append(7)
print(a)
b = list()
b.append(1)
b.append(2)
print(b)

在这里插入图片描述

  • 使用insert方法向任意位置插入,这里的位置也是下标
a = [1, 2, 3]
# 向下标1插入hello,列表变为1,hello,2,3
a.insert(1, 'hello')
print(a)

查找元素

  • 使用in来判断元素是否在列表中
a = [1, 2, 'hello']
print(1 in a)
print(3 in a)
print('hello' in a)
print('world' in a)

在这里插入图片描述

  • 使用index函数,查找元素在列表中的下标,如果元素不存在,则会抛异常
a = [1, 2, 'hello']
print(a.index('hello'))
print(a.index(2))

在这里插入图片描述
元素不存在则抛出异常

a = [1, 2, 'hello']
print(a.index(3))

在这里插入图片描述

删除元素

  • 使用pop函数可以进行尾删
a = [1, 2, 'hello']
a.pop()
print(a)
a.pop()
print(a)

在这里插入图片描述

  • 也可以为pop函数传入下标,按照下标删除
a = [1, 2, 3, 'hello']
a.pop(3)
print(a)

在这里插入图片描述

  • 使用remove函数,按照值删除
a = [1, 2, 3, 'hello']
a.remove(3)
a.remove('hello')
print(a)

在这里插入图片描述

列表拼接

  • 使用+可以拼接两个列表,使用+拼接,返回的是一个新列表,即原列表不受影响
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)

在这里插入图片描述

  • 使用extend方法把一个列表拼接到另一个列表后面,此时会改变拼接的列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
print(b)

说明:将b列表拼接在a列表后面,即a列表发生变化,b列表不变
在这里插入图片描述

遍历列表

遍历列表就是从头往后依次获取列表中的每一个元素

  • 使用for循环遍历
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for e in a:
    print(e)
  • 使用for循环加下标
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0,len(a)):
    print(a[i])
  • 使用while循环遍历
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
i = 0
while i < len(a):
    print(a[i])
    i += 1

切片操作

通过下标是一次只能取出一个元素,而通过切片操作一次可取出一组连续的元素

  • 使用[:]进行切片操作
a = [1, 2, 3, 4, 5]
print(a[1:3])

在这里插入图片描述
说明:[1:3]表示由下标组成为[1,3)区间的下标集合,包含的下标有1,2,不包含3

切片操作也可以省略前后边界

  • 省略后边界,表示获取到列表尾部
a = [1, 2, 3, 4, 5]
print(a[1:])

在这里插入图片描述

  • 省略前边界,表示从列表头开始获取
a = [1, 2, 3, 4, 5]
# 从头开始直到倒数第一个(不包含倒数第一个)
print(a[:-1])

在这里插入图片描述

  • 前后边界都省略,表示获取整个列表
a = [1, 2, 3, 4, 5]
print(a[:])

在这里插入图片描述

  • 切片操作还可以指定步长,表示访问一个元素,下标增加几步
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从下标1开始直到8(不包含8),每隔两个长度打印
print(a[1:8:2])

在这里插入图片描述

  • 切片操作的步长还可以是负数,表示从后往前取元素
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 此时下标范围为[8,1)(从后往前)
print(a[8:1:-2])

在这里插入图片描述

  • 如果切片操作中的数字越界了,不会有负面影响,会尽可能把满足条件的元素获取到
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[8:100])

在这里插入图片描述

元组

元组和列表相似,只是列表中的元素可以被修改,而元组中的元素不可修改,也就是元组一旦确定,就只能进行读操作,不可以进行修改操作,元组使用()表示

创建元组

# 创建两个空元组
a = ()
b = tuple()

在创建元组时进行初始化

a = (1, 2, 'hello', 3.14, True)

元组中的操作

元组与列表类似,只是元组一旦定义则不能修改其中的元素

  • 像读操作,比如切片操作,遍历,in,index,+等,元组是支持的
  • 像写操作,比如添加元素,删除元素,修改元素,extend等,元组是不支持的

对于读之类的操作,和上述列表操作类似,此处不过多介绍,具体操作参照上述列表操作

  • 元组在Python中很多时候是默认的集合类型,如函数返回多个值时
def method():
    return 10, 20
ret = method()
print(type(ret))

在这里插入图片描述

有了列表,为什么还需要元组?

  • 你有一个列表,现在需要调用一个函数进行一些处理,但是你有不是特别确认这个函数是否会
    把你的列表数据弄乱,那么这时候传一个元组就安全很多
  • 马上要介绍的字典,是一个键值对结构,要求字典的键必须是 “可hash对象” (字典本质上也
    是一个hash表),而一个可hash对象的前提就是不可变,因此元组可以作为字典的键,但是列表
    不行

字典

字典是一个存储键值对key: value的结构,字典用{}表示

创建字典

键值对:键:值,多个键值对用分割

# 创建两个空字典
a = {}
b = dict()

可以在创建的时候指定初始值,也可以使用print打印字典

a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a)

在这里插入图片描述

添加/修改元素

使用[]可以根据key来增加元素或者修改元素

  • 如果key不存在,则为新增键值对
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
# class不存在,则为新增
a['class'] = 3
print(a)

在这里插入图片描述

  • 如果key存在,则为修改
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
a['name'] = '李四'
print(a)

在这里插入图片描述

删除元素

使用pop方法根据key删除键值对

a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
a.pop('name')
print(a)

在这里插入图片描述

查找

  • 使用in可以判断key是否在字典中存在
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print('name' in a)
print('class' in a)

在这里插入图片描述

  • 基于[]使用key来获取value的值
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a['name'])
print(a['age'])

在这里插入图片描述

  • 如果key在字典中不存在,则会抛异常
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a['class'])

在这里插入图片描述

字典的遍历

  • 使用for循环获取到key,再通过key获取到value
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
for key in a:
    print(key, a[key])

在这里插入图片描述

  • 使用keys方法可以获取字典中所有的key
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a.keys())

在这里插入图片描述

说明:dict_keys是一个特殊的类型,专门用来表示字典所有的key

  • 使用values方法可以获取字典中所有的value
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a.values())

在这里插入图片描述

说明:dict_values和dict_keys类似,专门用来表示字典中所有的value

  • 使用items方法可以获取到字典中所有的键值对
a = {
    'name': '张三',
    'gender': 'm',
    'age': 20
}
print(a.items())

在这里插入图片描述

说明:dict_items和dict_keys类似,专门用来表示字典中所有的键值对

合法的key类型

字典本质上是一个哈希表,而哈希表的key值是要求是“可哈希的”,也就是可以通过这个key计算出哈希值

  1. 可以使用hash函数计算出哈希值
  2. 可以计算出哈希值的类型就可以作为key
  • int,float,str,bool,元组类型的走可以计算出哈希值,可以作为key
print(hash(3))
print(hash('hello'))
print(hash(True))
print(hash((1, 2, 3)))

在这里插入图片描述

  • 列表不可以计算哈希值,不可以作为key
print(hash([1, 2, 3]))

在这里插入图片描述

  • 字典不可以计算哈希值,无法作为key
print(hash({'name': 'zs', 'age': 10}))

在这里插入图片描述

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

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

相关文章

nginx优化及配置

nginx隐藏版本号 查看方法 浏览器F12 看network头部看server curl -i 192.168.232.7 获取头部&#xff08;查版本号&#xff09; 配置文件改 添加server_tokens off 改源码 cd /src/core vim nginx.h 修改 修改的IIS为window常用的软件服务 重新编译安装 cd nginx_1.2…

【C++】while 循环应用案例 - 猜数字游戏

目录 1、缘起 2、案例描述 3、代码 4、相关知识点 4.1、rand() 函数 4.2、srand() 函数 5、总结 1、缘起 猜数字游戏是一种简单而又有趣的游戏&#xff0c;在这个游戏中&#xff0c;计算机会生成一个随机数字&#xff0c;玩家需要通过不断猜测来猜出这个数字。在本篇博…

使用docker搭建lnmp环境+redis服务

lnmp搭建过程&#xff0c;前文已经写了传送门&#xff0c;本文主要写一下运行redis容器和php-fpm容器内安装redis扩展 redis 1.创建宿主机配置和数据文件夹 [rootlocalhost ~] mkdir -p /lnmp/redis/{data,conf}2.放置/lnmp/redis/conf/redis.conf文件 点我下载 3.启动容器 …

k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法

最近在学习边缘计算要用到kubeedge&#xff0c;安装了好多次总会遇到各种各样的问题&#xff0c;因此在这里一一列出&#xff0c;以方便下次安装。则里面可能出错的地方太多&#xff0c;如果有问题&#xff0c;请私信联系。 一、环境准备 节点IP环境软件云端节点172.23.70.23…

Python|矿产卫片Excel经纬度坐标数据转换为shp点数据——OGR库实现

1.实验需求 基于Excel表格里面的经纬度坐标数据,自动生成点shp矢量文件,并添加属性信息。 2.编程思路详解 ①使用Pandas库读取原始矿产图斑列表表格; xlsx_path = uC:\\Users\\YaoJun\\Desktop\\矿产图斑列表.xlsx #sheet_name默认为0,即读取第一个sheet的数据 df = pd.…

TPM管理工作应该如何开展?

在制造行业&#xff0c;Total Productive Maintenance&#xff08;TPM&#xff09;管理被广泛认为是提高生产效率和设备可靠性的有效方式。然而&#xff0c;实施TPM管理需要深入的专业知识和经验。本文将探讨如何开展TPM管理工作&#xff0c;以确保制造企业的生产效率和设备可靠…

2023-Python实现烯牛数据采集

文章目录&#x1f449;1、目标网址&#x1f449;2、接口分析&#x1f449;3、代码实现【JS 逆向百例】 1/100 学习记录&#xff1a;哈喽~ 前面我们接触了一些JS逆向的数据获取&#xff0c;如果前面的百度&#xff0c;有道翻译和正方教务系统的登录加密你已掌握&#xff0c;说明…

计组2.4——加法器的设计

计组&#xff1a;2.4算术逻辑单元异或门实现奇偶校验的原理串行加法器&&并行加法器并行加法器的优化算术逻辑单元 控制信号&#xff1a; 当M0时表示算术运算 当M1时表示逻辑运算 S0~ S3表示做什么运算&#xff0c;因此ALU可以表示16种算数运算和16种逻辑运算 Ai,Bi代表…

PL-VINS线特征处理部分源码阅读

PL-VINS线特征处理部分源码阅读1 linefeature_tracker2 三角化单目三角化双目三角化3 后端优化线特征状态量重投影误差本文主要阅读PL-VINS中引入线特征的代码实现&#xff0c;包括线特征表示方法&#xff08;Plcker参数化方法、正交表示法&#xff09;、前端线特征提取与匹配、…

遥感、GIS及GPS在土壤空间数据分析、适应性评价、制图及土壤普查中的应用

摸清我国当前土壤质量与完善土壤类型&#xff0c;可以为守住耕地红线、保护生态环境、优化农业生产布局、推进农业高质量发展奠定坚实基础&#xff0c;为此&#xff0c;2022年初国务院印发了《关于开展第三次全国土壤普查的通知》&#xff0c;决定自2022年起开展第三次全国土壤…

微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能详情以及回调处理

一.支付相关文档地址支付wiki&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml支付api: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml开发工具包(SDK)下载&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtm…

靶机精讲之CTF4

主机发现 靶机193 端口扫描 服务扫描 80&#xff0c;25&#xff08;明确版本&#xff09;攻击面更大 web渗透 blog是交互式的程序 发现index可进行手动爆破&#xff08;地址包含&#xff09; http://192.168.10.193/index.html?page../../../../../../../../etc/passwd 无发…

雨水情测报系统+智慧水库大坝安全监测系统

解决方案 雨水情测报系统智慧水库大坝安全监测系统&#xff0c;系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成&#xff0c;同时建立规范、统一的监测平台&#xff0c;集数据传输、信息共享、数据储存于…

Git简单使用~下载、安装、命令行使用、IDEA使用

文章目录一、Git下载二、Git安装三、命令行操作四、IDEA使用gitee4. 查看Gitee仓库一、Git下载 官网下载地址&#xff1a;Git (git-scm.com) 点击"Download for Windows"&#xff0c;跳转至详细下载页面。 以Windows64位安装版为例&#xff0c;点击"64-bit…

代码随想录算法训练营第42天| 416. 分割等和子集

代码随想录算法训练营第42天| 416. 分割等和子集416. 分割等和子集416. 分割等和子集 题目链接&#xff1a;416. 分割等和子集&#xff0c;难度&#xff1a;中等 【实现代码】 class Solution { public:bool canPartition(vector<int>& nums) {int sum 0;for (int…

抢鲜发布:Flutter 3.7更新详解

本文首发自「慕课网」(imooc.com)&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;CrazyCodeBoy|慕课网讲师 新年伊始&#xff0c;由 Flutter 3.7 正式版来「打头阵」&#xff01;我们与整个…

AI时代,重新理解阿里云

如果说&#xff0c;在数字化时代&#xff0c;阿里云给外界的标签是基于算力、数据等要素的基建角色&#xff0c;那么&#xff0c;在如今的智能化时代&#xff0c;基于自身强大的云计算能力和长期以往的AI技术积累&#xff0c;它的这种底座底色显然再一次被夯实、彰显。 作者|皮…

【Python_Scrapy学习笔记(六)】Scrapy框架基本使用流程

Scrapy框架基本使用流程 前言 本文中介绍 Scrapy 框架的基本使用流程&#xff0c;并以抓取汽车之家二手车数据为例进行讲解。 正文 1、Scrapy框架基本使用流程 创建爬虫项目&#xff1a;scrapy startprojecct 项目名 cd到项目文件夹&#xff1a;cd 项目名 创建爬虫文件&a…

PCB模块化设计06——HDMI接口PCB布局布线设计规范

目录PCB模块化设计06——HDMI接口PCB布局布线设计规范1、HDMI接口的定义2、HDMI管脚定义&#xff08;A型为例&#xff09;3、HDMI接口PCB布局要求4、HDMI接口布线要求PCB模块化设计06——HDMI接口PCB布局布线设计规范 1、HDMI接口的定义 高清晰度多媒体接口&#xff08;英文&…

Jina AI 创始人肖涵博士:揭秘 Auto-GPT 喧嚣背后的残酷真相

Auto-GPT 究竟是一个开创性的项目&#xff0c;还是一个被过度炒作的 AI 实验&#xff1f;本文为我们揭开了喧嚣背后的真相&#xff0c;并揭示了 Auto-GPT 不适合实际应用的生产局限性。 背景介绍 这两天&#xff0c;Auto-GPT&#xff0c;一款让最强语言模型 GPT-4 能够自主完成…