python中的四大内置容器

容器:

是一种可以存放多个元素的数据类型

补充变量无法存储大量数据的缺陷

python提供的容器

列表,集合,元组,字典

列表--list

线性表(常见线性表-数组 栈 链表 队列)---基于链表的数据结构实现的

注意:python没有数组

python中的列表是基于链表(双向链表)实现的

从0开始

全局函数len(容器)----返回容器的长度

>>> list=[1,2,3,4]
>>> list
[1, 2, 3, 4]
>>> list(0)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
>>> list[0]
1
>>> list[-1]
4
>>> list[-2]
>>> len(list)
4

常见方法:'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse'

append----向列表尾部添加元素

>>> ls=[1,2,3,4,5]
>>> ls.append(6)
>>> ls
[1, 2, 3, 4, 5, 6]

insert-----向指定位置添加元素

>>> ls.insert(2,7)
>>> ls
[1, 2, 7, 3, 4, 5, 6]

sort----列表排序(通常情况下只能排序int类型 默认升序)字母按照ASCII表值进行排序,列表里面元素类型不能混淆!

>>> ls
[1, 2, 7, 3, 4, 5, 6]
>>> ls.sort()
>>> ls
[1, 2, 3, 4, 5, 6, 7]
>>> ls2=["a","D","c","b","A"]
>>> ls2
['a', 'D', 'c', 'b', 'A']
>>> ls2.sort()
>>> ls2
['A', 'D', 'a', 'b', 'c']
>>> ls1 =["a","D",1,6,9,7]
>>> ls1
['a', 'D', 1, 6, 9, 7]
>>> ls1.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
>>> type(ls1)
<class 'list'>

index---查找元素第一次在列表中出现的位置

>>> ls.index(3)
2
>>> ls.insert(3,5)
>>> ls
[1, 2, 3, 5, 4, 5, 6, 7]
>>> ls.index(5)
3

reverse------将列表元素顺序进行翻转

>>> ls
[1, 2, 3, 5, 4, 5, 6, 7]
>>> ls.reverse()
>>> ls
[7, 6, 5, 4, 5, 3, 2, 1]

remove----通过元素进行移除元素,如果元素不存在抛出异常

>>> ls
[7, 6, 5, 4, 5, 3, 2, 1]
>>> ls.remove(5)
>>> ls
[7, 6, 4, 5, 3, 2, 1]

count---统计元素在列表中出现的次数

clear------清除元素

copy----浅拷贝对象 不等价=在堆内存中进行对象拷贝

>>> ls
[7, 6, 4, 5, 3, 2, 1]
>>> ls.count(3)
1
>>> list
[1, 2, 3, 4]
>>> list.clear()
>>> list
[]
>>> ls1=[10,20,30]
>>> ls1=ls.copy()
>>> ls1
[7, 6, 4, 5, 3, 2, 1]

extend----合并列表

>>> ls1
[7, 6, 4, 5, 3, 2, 1]
>>> ls2=[10,20,50]
>>> ls.extend(ls2)
>>> ls
[7, 6, 4, 5, 3, 2, 1, 10, 20, 50]

pop----与append相反,删除列表中最后一个元素,有返回值,返回的是删除的元素值,如果要删除指定位置的元素,可以通过pop(i),i指的是索引

>>> ls
[7, 6, 4, 5, 3, 2, 1, 10, 20, 50]
>>> ls.pop()
50
>>> ls
[7, 6, 4, 5, 3, 2, 1, 10, 20]
>>> ls.pop(5)
2
>>> ls
[7, 6, 4, 5, 3, 1, 10, 20]

补充:

可以通过索引(下标)修改莫个元素

list里面可以存放另一个list

>>> ls3=[1,2,3,4,[5,6,7,8],9]
>>> ls3
[1, 2, 3, 4, [5, 6, 7, 8], 9]
>>> type(ls3)
<class 'list'>
>>> ls3[4][3]
8

list里面元素类型可以不一样

集合-----set(哈希结构)

定义集合方法

>>> s ={1,2,3,4}
>>> type(s)
<class 'set'>
>>> s=set()
>>> type(s)
<class 'set'>
>>> s
set()
>>> s=set({1,2,3,4})
>>> s
{1, 2, 3, 4}
>>> type(s)
<class 'set'>

集合的底层是基于哈希表实现的---所以集合是无序的,不能重复的

s[0]------不可以的,报错,因为无序

add----添加元素(添在后面,元素不重复)

>>> s.add(6)
>>> s
{1, 2, 3, 4, 6}
>>> s.add(6)
>>> s
{1, 2, 3, 4, 6}

difference----差集

intersection---交集

union----并集

>>> ls3={1,2,3,7,0,9}
>>> s.difference(ls3)
{4, 6}
>>> s.intersection(ls3)
{1, 2, 3}
>>> s.union(ls3)
{0, 1, 2, 3, 4, 6, 7, 9}

update----更新集合,合并集合

discard----移除元素,如果元素不存在不报错

>>> s
{1, 2, 3, 4, 6}
>>> s.update(ls3)
>>> s
{0, 1, 2, 3, 4, 6, 7, 9}
>>> s.discard(3)
>>> s
{0, 1, 2, 4, 6, 7, 9}

元组---tuple

元组是有序的---可以通过下标获取元素的值,下标可以为负数,但是不能修改

元组特点:有序的,不可变

定义方式

>>> t =(1,2,3,4)
>>> type(t)
<class 'tuple'>
>>> t1=tuple()
>>> t1
()
>>> t2=tuple(1,2,3,4,5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: tuple expected at most 1 argument, got 5
>>> t2 = tuple(1,2,3,4,5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: tuple expected at most 1 argument, got 5
>>> t2 = tuple((1,2,3,4,5))
>>> t2
(1, 2, 3, 4, 5)
>>> type(t2)
<class 'tuple'>

元组不可变类型

虽然元组是不可变,如果元组里面的元素是可变类型,那么元组就可变

>>> t=(1,2,3,[1,2,3,4,5,6],7)
>>> type(t)
<class 'tuple'>
>>> t[3][2]
3
>>> t[3][2]=7
>>> t
(1, 2, 3, [1, 2, 7, 4, 5, 6], 7)

注意:下标3指向的list不可变指的是指向不变 变化的是指向的list的值发生了改变

面试题: a=(1)--------type(a)返回的结果是? 结果是int

如何定义一个只有一个元素的元组----a(1,)

字典----dict

字典是键值对形式存在的数据

定义字典:

>>> d={"name":"xiaoli","age":18}
>>> type(d)
<class 'dict'>
>>> dd =dict()
>>> type(dd)
<class 'dict'>
>>> d
{'name': 'xiaoli', 'age': 18}
>>> dd
{}
>>> ddd =dict({"name":"hhh","age":14})
>>> ddd
{'name': 'hhh', 'age': 14}

如何访问字典中的值?

可以通过key来访问定义的value d["name"]

字典对象【key】返回的是value

修改值----------字典对象【key】=新value

增加新的键值对-----字典对象新【key】=value

>>> d
{'name': 'xiaoli', 'age': 18}
>>> d["name"]
'xiaoli'
>>> d["sex"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'sex'
>>> d["age"]
18
>>> d["name"]="litingjie"
>>> d
{'name': 'litingjie', 'age': 18}
>>> d["emali"]="18385390490@163.com"
>>> d
{'name': 'litingjie', 'age': 18, 'emali': '18385390490@163.com'}

常见方法

get------和字典对象【key】类似,

keys---返回使用的键值

values----返回所用的值

setdefault-----设置一个默认值

items-----返回键值对

pop------通过健来移除键值对,没有抛出异常

popitem-----移除键值对的(按照后进先出的顺序进行移除),返回的是移除的键值对

>>> d.get("name")
'litingjie'
>>> d.keys()
dict_keys(['name', 'age', 'emali'])
>>> d.setdefault("class")
>>> d
{'name': 'litingjie', 'age': 18, 'emali': '18385390490@163.com', 'class': None}
>>> d.setdefault("class","xxxx")
>>> d
{'name': 'litingjie', 'age': 18, 'emali': '18385390490@163.com', 'class': None}
>>> d.items()
dict_items([('name', 'litingjie'), ('age', 18), ('emali', '18385390490@163.com'), ('class', None)])
>>> d.pop("class")
>>> d
{'name': 'litingjie', 'age': 18, 'emali': '18385390490@163.com'}
>>> d.popitem()
('emali', '18385390490@163.com')
>>> d
{'name': 'litingjie', 'age': 18}

如何进行字典的遍历?????

>>> d
{'name': 'litingjie', 'age': 18}
>>> for k in d:
...     print(k,d.get(k))
...
name litingjie
age 18
---------------------------------------------------------------------------
>>> for k in d.keys():
...      print(k,d[k])
...
name litingjie
age 18
---------------------------------------------------------------------------
>>> for k,v in d.items():
...     print(k,v)
...
name litingjie
age 18

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

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

相关文章

深度关系--平衡双方影响力避免刺痛变成剧痛针对行为给予反馈有效反馈的挑战

平衡双方的影响力 建立深度关系&#xff0c;要考虑双方的需求&#xff0c;使双方的需求以相对平衡的方式得到满足。 关系要想持久&#xff0c;影响力就必须达到平衡或匹配 自我表露、支持、信任以及进一步的表露——这种循环是平衡的基础 无论人与人之间的了解有多深&#x…

【DDR】DDR4学习记录

这里以美光DDR4芯片 MT40A512M16HA-075E datasheet 为例&#xff0c;说明DDR4存储器的原理及仿真。   根据开发板手册ug1302&#xff0c;在vcu128&#xff08;xcvu37p&#xff09;开发板上&#xff0c;共具有5块DDR4芯片&#xff0c;在数据信号上4块DDR4具有16位数据线&#…

「jQuery系列」jQuery中Ajax的运用

文章目录 一、Ajax简介二、jQuery $.get() 方法三、jQuery $.post() 方法四、jQuery load() 方法五、热门文章 一、Ajax简介 jQuery Ajax 是 jQuery 提供的一个功能强大的异步通信方法&#xff0c;它允许网页与服务器之间进行数据交换&#xff0c;而无需重新加载整个页面。通过…

C#常见的.Net类型(二)

目录 一、在集合中存储多个对象理解集合的选择1.列表2.字典3.堆栈4.队列5.集 二、使用Span、索引和范围Span索引范围 处理类型和属性1.特性2.创建自定义特性3.反射 一、在集合中存储多个对象 处理集合的常见类型 类型描述List动态大小的数组&#xff0c;可以按索引访问Dictio…

七月论文审稿GPT第3.1版和第3.2版:通过paper-review数据集分别微调Mistral、gemma

前言 我司第二项目组一直在迭代论文审稿GPT(对应的第二项目组成员除我之外&#xff0c;包括&#xff1a;阿荀、阿李、鸿飞、文弱等人)&#xff0c;比如 七月论文审稿GPT第1版&#xff1a;通过3万多篇paper和10多万的review数据微调RWKV七月论文审稿GPT第2版&#xff1a;用一万…

Scrapy 爬虫框架

网络爬虫框架scrapy &#xff08;配置型爬虫&#xff09; 什么是爬虫框架&#xff1f; 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是个半成品&#xff0c;帮助用户实现专业网络爬虫 scrapy框架结构("52"结构) spider: 解析downloader返回的响…

第四弹:Flutter图形渲染性能

目标&#xff1a; 1&#xff09;Flutter图形渲染性能能够媲美原生&#xff1f; 2&#xff09;Flutter性能优于React Native? 一、Flutter图形渲染原理 1.1 Flutter图形渲染原理 Flutter直接调用Skia 1&#xff09;Flutter将一帧录制成SkPicture&#xff08;skp&#xff…

Doris部署学习(一)

目录 前言 一、Docker容器支持 二、Doris编译步骤 1.拉取镜像 2.构建Docker编译容器 3.下载源码并编译 前言 本文档主要介绍如何通过源码在Docker编译 Doris&#xff0c;以及部署。 一、Docker容器支持 Docker教程&#xff1a;Docker & Docker-Compose 安装教程 - 知…

iOS 17.4报错: libopencore-amrnb.a[arm64]

iOS 17.4报错&#xff1a; libopencore-amrnb.a[arm64] iOS 17.4 模拟器运行报错解决方案 iOS 17.4 模拟器运行报错 Building for ‘iOS-simulator’, but linking in object file (/XXX/lib/libopencore-amrnb.a[arm64]2) built for ‘iOS’ 解决方案 在Podfile里添加如下设…

jupyter 修改文件保存位置 步骤

一、找到配置文件位置 打开Anaconda Prompt&#xff0c;输入&#xff1a; jupyter notebook --generate-config 根据得到的路径&#xff0c;以记事本方式打开配置文件 二、修改路径 在文件中输入&#xff1a; c.NotebookApp.notebook_dir E:\\deepLearning\\Jupyter_files…

张量维度改变总结

文章目录 一、view() 或 reshape()二、unsqueeze()三、squeeze()四、transpose()五、torch.expand_dims 一、view() 或 reshape() view() 或 reshape(): 这两个函数可以用于改变张量的形状&#xff0c;但保持元素总数不变。它们可以接受一个新的形状作为参数&#xff0c;并返回…

Vue的渲染原理

列表渲染 列表渲染 v-for指令写在循环项上&#xff1a;v-for“(一个参数或者两个参数) in/of 要遍历的数组、对象、字符串、指定次数” 遍历数组时参数分别是数组中元素(可以是一个对象)和元素所在下标(从0开始)遍历对象时参数分别是属性值和属性名遍历字符串时参数分别是单…

人工智能在增强数据安全方面的作用

近年来&#xff0c;人工智能&#xff08;AI&#xff09;的力量已被证明是无与伦比的。它不再是我们想象的主题。人工智能已经成为现实&#xff0c;并且越来越清楚地表明它可以让世界变得更美好。但人工智能能帮助我们增强数据安全吗&#xff1f; 由于技术的日益普及&#xff0…

概率与常见的概率分布

概率是数据分析、机器学习中最基础的知识。也是在生活中最实用的一门学科&#xff0c;学了很多大道理不一定能过好一生&#xff0c;学好概率则有一定概率会变得更好。为大概率坚持&#xff0c;为小概率备份。 概率与分布 要想了解概率&#xff0c;首先得搞清楚概率和概率分布的…

力扣L9--- 12. 整数转罗马数字--2024年3月12日

1.题目 2.知识点 &#xff08;1&#xff09;HaspMap的一些基本语法 1&#xff09;创建 HashMap&#xff0c;用于存储键为 String 类型、值为 Integer 类型的键值对。 HashMap<String, Integer> map new HashMap<>();2&#xff09;添加键值对&#xff1a; map.p…

Python 基础语法:基本数据类型(集合)

1 集合&#xff08;Set&#xff09;的基本概念和特性 集合是一个无序的、不重复的元素序列。集合中的元素是唯一的&#xff0c;即集合中不会出现重复的元素。集合的主要作用是进行成员关系测试和消除重复元素。 集合的特性&#xff1a; 无序&#xff1a;序列是有序的&#…

PTA L1-009 N个数求和(C++)

本题的要求很简单&#xff0c;就是求N个数字的和。麻烦的是&#xff0c;这些数字是以有理数分子/分母的形式给出的&#xff0c;你输出的和也必须是有理数的形式。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤100&#xff09;。随后一行按格式a1/b1 a2/b2 …

DAY14二叉树迭代遍历

二叉树前序迭代法遍历 前序遍历是中左右&#xff0c;每次先处理的是中间节点&#xff0c;那么先将根节点放入栈中&#xff0c;然后将右孩子加入栈&#xff0c;再加入左孩子。 为什么要先加入 右孩子&#xff0c;再加入左孩子呢&#xff1f; 因为这样出栈的时候才是中左右的顺…

刷题日记——01字符串、非素数个数(厦门大学机试)

题目1——01字符串 分析 经过拆解找规律&#xff0c;发现是两个斐波那契 那么代码就好写了呀 #include <stdio.h>unsigned long long f(int n){if(n0||n1){return n;}return (f(n-1)f(n-2))%2333333; }int main(){int n;scanf("%d",&n);printf("%…

Python实战:Python内置数据类型

Python是一种广泛应用于各种领域的编程语言&#xff0c;其内置数据类型是Python编程的基础。本文将详细介绍Python内置数据类型&#xff0c;包括数字、字符串、列表、元组、字典和集合等&#xff0c;并通过具体代码示例来帮助读者更好地理解和应用这些数据类型。 1. 数字 Pyt…