python中的四大内置容器

容器:

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

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

python提供的容器

列表,集合,元组,字典

列表--list

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

注意:python没有数组

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

从0开始

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

python 复制代码
>>> 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'>

>>> ls343

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'>

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

s0------不可以的,报错,因为无序

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'>

>>> t32

3

>>> t32=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,dk)

...

name litingjie

age 18


>>> for k,v in d.items():

... print(k,v)

...

name litingjie

age 18

相关推荐
方也_arkling4 小时前
【Java-Day08】static / final / 枚举
java·开发语言
风吹夏回5 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei115 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1125 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding5 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋95 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本5 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
xiaoshuaishuai85 小时前
C# 内存管理与资源泄漏
开发语言·c#
lsx2024066 小时前
SVN 检出操作
开发语言
田里的水稻6 小时前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人