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

文章目录

  • 列表
    • 创建列表
    • 获取元素
    • 修改元素
    • 添加元素
    • 查找元素
    • 删除元素
    • 列表拼接
    • 遍历列表
    • 切片操作
  • 元组
    • 创建元组
    • 元组中的操作
  • 字典
    • 创建字典
    • 添加/修改元素
    • 删除元素
    • 查找
    • 字典的遍历
    • 合法的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}))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java对日开发成趋势?网友:找工作打开了新思路

近两年行业环境起起伏伏&#xff0c;企业降本增效&#xff0c;提高人才招聘的门槛&#xff0c;导致大家找工作时觉得越来越难&#xff0c;尤其是Java开发&#xff0c;主打的就是一个“卷”&#xff01; 不过行业变革&#xff0c;挑战与机遇并存。Java作为编程语言排行榜的常年第…

malloc hook进行内存泄漏检测

记录下使用malloc的hook形式&#xff0c;写个小的demo&#xff0c;并记录遇到的问题 1. 实现代码&#xff1a; CMakeLists.txt和相应的memory_leak.cpp文件 cmake_minimum_required(VERSION 3.14) project(demo)set(_SRCmemory_leak.cpp)add_library(memory_leak SHARED ${_S…

SpringCloud:ElasticSearch之索引库操作

ElasticSearch索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向ElasticSearch中存储数据&#xff0c;必须先创建“库”和“表”。 1.mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;…

【无人机】采用最基本的自由空间路损模型并且不考虑小尺度衰落(多径多普勒)固定翼无人机轨迹规划(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Android Audio】TimeCheck机制

TimeCheck机制&#xff08;Android R/S&#xff09; TimeCheck.cpp TimeCheck.h frameworks/av/media/utils/TimeCheck.cpp TimeCheck守护线程的作用&#xff1a; 当audioserver中IAudioFlinger&#xff0c;IAudioPolicyService&#xff0c;IEffect中的每一个binder函数调用时…

E4--光纤接口通信测试应用2023-04-17

1.场景 使用两块开发板A和B&#xff0c;通过光纤接口将在A板上ROM中存储的图片数据转发到B板并显示在B板连接的显示屏上&#xff0c;实现光纤接口通信。 具体场景是&#xff0c;由于A735T片上资源有限&#xff0c;因此ROM IP存储了一张1024*600&#xff08;LVDS屏幕&#xff0…

深拷贝与浅拷贝

目录&#xff1a; 深拷贝与浅拷贝的区别实现深拷贝的方式利用JSON.parse(JSON.stringify())实现深拷贝的局限性cloneDeep与json的对比手写实现cloneDeep 深拷贝与浅拷贝的区别 深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。 深拷贝和浅拷贝的示意图大致如下&a…

SpringBoot——Scheduled定时任务

目录 1.静态定时任务 2.动态定时任务 在一些业务场景中&#xff0c;我们需要定义一些任务在我们指定的时间或是每隔一个时间段就自动执行&#xff0c;来作为任务的前提&#xff0c;保证业务的执行。比如&#xff1a;我们需要一个定时任务&#xff0c;每天早上6点执行&#xf…

多通道振弦传感器无线采集采集仪如何开始使用

多通道振弦传感器无线采集采集仪如何开始使用 开始使用 设备电源 VS208~432 可使用内置电池&#xff08;默认&#xff09;也可使用外部电池工作。 需要特别注意&#xff1a;严禁内置和外部电池&#xff08;电源&#xff09;同时使用&#xff0c;严重时会造成短路起火&#xff0…

靶机精讲之CTF4

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

【数据挖掘与商务智能决策】第八章 K近邻算法

第八章 K近邻算法 1.K近邻算法简单代码演示 import pandas as pd df pd.read_excel(葡萄酒.xlsx) df原始样本酒精含量(%)苹果酸含量(%)分类0样本15201样本26102样本34103样本48314样本51021 # 特征变量和目标变量的切分 X_train df[[酒精含量(%),苹果酸含量(%)]] y_train …

PHP实现以函数的方式计算阶乘,使用函数输入数值逆序输出的两个代码程序

目录 前言 一、实现以函数的方式计算阶乘 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、使用函数输入3个数求和&#xff0c;并以表单形式输出 2.1运行流程&#xff08;思想&#xff09; 2.2代码段 2.3运行截图 前言 1.因多重原因&#xff0c;…

【C++】模板进阶--非类型模板参数模板特化及分离编译

文章目录一、非类型模板参数二、模板的特化1.模板特化的概念2.函数模板的特化3.类模板的特化3.1 全特化3.2 偏特化4.类模板特化应用示例三、模板的分离编译四、模板总结一、非类型模板参数 模板参数分为类型形参与非类型形参&#xff0c;其中&#xff0c;类型形参即出现在模板…

Spring启动及Bean实例化过程来看经典扩展接口

目录 一、Spring启动及Bean实例化过程 二、分析其对应经典扩展接口 三、对开发的指导意义 备注&#xff1a;以下总结只是一些基本的总结思路&#xff0c;具体每个扩展接口的应用后续进行分析总结。 一、Spring启动及Bean实例化过程 Spring启动及Bean实例化的过程&#xff0…

CSS实现三角形的四种方法

方法一&#xff1a;使用 border (常见) 【解释】不设置宽高&#xff0c;用边框大小控制三角型大小 【分解步骤】 设置一个div不设宽高 【示例】 <style>#triangle{width: 0;height: 0;border: 100px solid;border-color: orangered skyblue gold yellowgreen;} </s…

Python第三方库安装

看见更大的Python世界 Python社区PyPI The Python Package Index PyPI: Python Package Index PSF维护的展示全球Python计算生态的主站 学会检索并利用PyPI&#xff0c;找到合适的第三方库开发程序 实例&#xff1a;开发与区块链相关的程序 第1步&#xff1a;在pypi.org…

第01章_Java语言概述

第01章_Java语言概述 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. Java知识脉络图 1.1 Java基础全程脉络图 1.2 本章专题与脉络 2. 抽丝剥茧话Java 2.1 当前大学生就业形势 麦可思研究院…

fMRI研究 | 社交情境下的混合情绪

导读 背景&#xff1a;神经科学通常都是单独研究各种情绪&#xff0c;而混合的情绪状态&#xff08;例如愉悦和厌恶、悲伤和快乐的共存&#xff09;在日常生活中很常见。心理生理学和行为学证据表明&#xff0c;混合情绪可能具有不同于其组成情绪的反应特征。然而&#xff0c;…

PHP快速入门02-PHP语言基础

文章目录前言一、 数据类型1.1 String&#xff08;字符串&#xff09;1.2 Integer&#xff08;整型&#xff09;1.3 Float&#xff08;浮点型&#xff09;1.4 Boolean&#xff08;布尔型&#xff09;1.5 Array&#xff08;数组&#xff09;1.6 Object&#xff08;对象&#xff…

重感知还是重地图?其实无需选择

近来&#xff0c;关于自动驾驶应该重感知还是重地图是个热点话题&#xff0c;很多重量级车厂、自动驾驶供应商都开始提出重感知轻地图的方案&#xff0c;并承诺很快能发布出对应的产品。业界也出现了高精地图已“死”等类似的言论。 一时之间&#xff0c;似乎轻地图已经成为了…