python初学2(容器)

📅 2026/7/18 13:55:58 👁️ 阅读次数 📝 编程学习
python初学2(容器)

容器

容器是一种可以存放多个数据的数据类型

python提供的容器有列表,元组,集合,字典

列表

常见的列表(顺序表,链表,栈,队列) --基于链表的数据结构来实现

python里面是没有数组的,数组的存储空间是连续的,所以其查询更快,增删改慢

python中的列表一般由双向链表来实现(每一个节点有三个区域:头指针,尾指针和数据区)

写法:

ls = [1,2,3,4] 可以用来写列表常量,本质是直接创建列表

ls = list([1,2,3,4]) 可以用来进行数据类型的转化,浅拷贝,其实地址较内部的[]已发生改变

通过索引(从0开始)来遍历列表

用while来展示

list1 =[1,2,3,4] index = 0 while index < len(list1): #len来查看列表的长度 print(list1[index]) index=index+1

常见方法:

append() 向尾部添加数据

insert(index,object)向指定位置添加元素

sort()排序,只能排int,字母按照ASCll编码

index()查找元素第一次在列表中出现的位置,如果没有这个元素则会报错

reverse() 列表倒转

remove() 通过元素来移除元素,没有该元素则会抛出异常

count() 统计元素总数

clear() 清除元素

copy() 浅拷贝对象,不是引用传递,在堆内存中进行对象拷贝

extend() 合并列表

pop() 删除最后一个元素,并返回该元素,可pop(i)

一些细节点:

1.数据的替换可以通过索引直接赋值

2.list内部的数据类型可以不同

3.list内部可以有list

举个例子:

p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']

拿到s里的php的索引是s[2][1]

集合

set() 哈希结构

语法

s = set({1,2,3,4}) 创建集合并赋值

注意set()是必写的,如果直接写s={}这是创建了一个字典,而非集合

因为和hash相关,所以是无序的,并且是不能重复的,不能通过索引来查找

方法

clear()

remove()

copy()

add() 添加元素,如果元素重复,则不能进行添加,因为涉及到hash算法

difference 差集

intersection 交集

union 并集

update 更新集合,合并集合,

discard 移除元素

元组

元组的创建:

t =(1,2,3,4)

全局元素创建:t = tuple(元素...)

元组是有序的,可以通过索引来查找数据;下标亦可以是负数,但是不可赋值

元组是一个不可变元素,所以创建之后,它的数据就不能改变,但如若元素是可变元素,则会改变

举例:

t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
这种情况下,元组的数据发生改变,但实际上改的是元组内部列表的值;而元组的不变是内部元素的地址指向不变。

字典

在其他语言中也称为map,是用键值对的形式来进行存储的

dict =({"name":"sgxm","age":"16"})

方法

clear,get

keys()返回所有的键

values() 返回所有的值

setdefault(key,默认值) 设置默认值

查询 key,如果 key 不存在,就自动新增这个键并赋值;存在就直接返回原有值,不会修改

items 返回键值对 (可迭代的对象)

pop(key)通过键来移除键值对,如果没有则抛出异常

popitem 删除并返回字典最后插入的一组键值对

遍历的方法:

for k in d: print(k,d.get(k)) for k in d.keys(): print(k,d[k]) for k,v in d.items(): print(k,v)
字符串

常见方法

count() 字符或字符串出现的次数

endswith() 判断字符串是否以xxx结尾

startswith() 判断字符串是否以xxx开头

index() 查找字符串出现的位置,无则抛出异常

rindex()反方向的找,查找最后一个位置

find()查找字符或字符串在字符串第一次出现的位置,如果不存在返回-1

rfind()

encode(编码形式)将字符串转化为字节的方法

相较于index(),find()程序不会崩溃

format() 格式化字符串

name = "小明" age = 18 s = "姓名:{},年龄:{}".format(name, age) # 下标写法 s2 = "姓名:{0},年龄:{1}".format(name, age) # 关键字参数 s3 = "姓名:{n},年龄:{a}".format(n="小明", a=18)

is...()这种都是对字符串内容进行判断

title() 转化为标题形式

lower() 转化为小写

upper() 转化为大写

split("") 以什么符号切割字符串,返回列表

strip()清空两侧空格

lstrip()

rstrip()

join() 分隔符去主动连接序列

names = ["张三","李四","王五"] print(" | ".join(names)) # 张三 | 李四 | 王五

ljust()左对齐

rjust()