Python list tuple bytes bytearray str 简介

本文介绍了Python中的四种主要数据结构:列表、元组、bytes和字符串。列表是有序、可变、可重复的,支持多种操作如增删改查;元组与列表类似但不可变;bytes是不可变字节序列,可以与字符串相互转换;字符串是不可变对象,支持多种格式化和操作。文章还涵盖了索引、切片、随机数以及这些数据结构的常用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构

列表

特点:有序、可变、可重复、连续内存空间

链表linked list:有序、可变、可重复、内存空间不连续
队列quene:先进先出
栈stack:后进先出

定义方法

l=list()
l=[]
l=[1,2,3]
l=list(可迭代对象)

索引

正索引从左至右0开始
负索引从右至左-1开始
索引超界报错IndexError
list[索引]
list[index]=value 通过索引修改列表元素值

查询

  • 索引
    list.index(value,[start,[stop]])
    从左至右查到第一个匹配的值就返回
    无匹配值报错ValueError
  • count
    list.count(value)
    返回列表中匹配值的个数
  • 时间复杂度
    index和count都是O(n),需要对列表进行遍历操作
  • len
    返回列表元素的个数

增删

list.append(value)
增加单个元素
就地修改 O(1)

list.insert(index,value)
通过索引插入值
就地修改 O(n)
超越上界尾部追加
超越下界头部追加

list.extend(iteratable)
追加一个可迭代对象的内部所有元素
就地修改

+
将两个列表连接起来返回一个新的列表

*
将一个列表的值重复n次返回一个新的列表

list.remove(value)
删除第一个匹配到的值
就地修改

list.pop([index])
弹出一个元素,默认弹出尾部元素

list.clear()
清除所有元素变成空列表
就地修改

list.reverse()
将元素顺序反转
就地修改

list.sort(key=None,reverse=False)
对列表进行排序,默认升序
reverse=True,降序
key=type,指定按转换成对应类型后排序

in
value in list
返回Bool值

list1=list.copy()
列表复制,引用类型为复制的内存地址
深拷贝
import copy
list1=copy.deepcopy(list)

随机数

random模块
import random
rando.randint(a,b)随机返回一个整数
random.range([start], stop,[step]) 从range对象中随机返回一个元素值
random.choice(seq) 从非空序列中随机返回一个元素值
random.shuffle(list)洗牌,打乱列表排序
random.sample(population,n)返回随机n个不同的元素,返回一个新的列表

元祖

t=()
定义一个元素的列表 t=(1,)
与列表相比 不可变 无法增删改

bytes

bytes不可变字节序列
bytearray可变字节数组

使用b前缀定义,定义出的是bytes
只允许基本ASCII使用字符形式b’str’
使用16进制表示b’\xn\xn’

str.(encode) -> bytes
bytes.(decode)  ->str
bytes(str,encoding=‘utf-8’)将字符串转为bytes,编码格式为’utf-8’
bytes(iterable of ints)->bytes[0-255]的int组成的可迭代对象
bytes(int)定义长度 用空字节初始化的参数给定大小的字节对象

b’abc’.replace(b’a’,b’c’)字节替换,返回新的
b’abc’.find(b’a’)
‘abc’.encode().hex()返回16进制表示的字符串
i=int.from_bytes(b’abc’,‘big’)将bytes内容16进制作为一个整体转换为int十进制
i.to_bytes(n,‘big’)再转为16进制字节显示,n为宽度,宽度不满左侧填充\x00

bytearray(str,encoding=‘utf-8’)将字符串转为bytearray,编码格式为’utf-8’
bytearray(bytes or buffer)复制出一个新的可变的bytearray对象
bytearray(b’abc’)[2]返回该字节对应的数 int类型
replace返回新值,append,insert,extend,pop,remove,clear,reverse就地修改,值为0x61=a,97=a,若使用int类型,值在[0,255]

切片

[起始索引:终止索引:步长]前包后不包,截取字段后返回新值,不对数据本身做修改
[:]全部 省略等于缺醒值 开始到最后 步长1
索引可超界
*[:]=iterable 将切片选中字段替换成可迭代对象值
切片赋值可跨类型,不改变类型本身
浅拷贝

字符串

字符串是不可变对象 字面常量

Python3起 字符串就是unicode字符

R/r‘string’ 取消字符串中的转义

‘str’.join(string) str加入字符串中作间隔符

map(self, /, *args, **kwargs)

‘str’.split(’ 分隔符’,maxsplit=n)

‘str’.split(None)默认以空白字符切割
多个空白字符按一个处理

‘str’.split(‘分隔符’,n) 按分隔符切割及切割次数,默认-1无限切

‘str’.split(sep=‘str’)按给定的字符切割

‘str’.rsplit(‘分隔符’,n) 从右侧切割

splitlines()按换行符切割/按行切割\r\n视为一个换行符
splitlines(True)切割后保留换行符

split切割返回列表

splite匹配不到分隔符不切割,partition匹配不到分隔符会切成3段,另两段是空字符串’’

partition必须给分隔符

partition(‘str’) 按分隔符切割成3段 中间是分割符
返回元祖

rpartition右侧开始切割

upper()全大写
lower()全小写

swapcase()交互大小写

title()标题的每个单词都大写
capitalize()首个单词大写

center(打印宽度,【填充字符】)

zfill(打印宽度)居右填充0

左右对齐填充
ljust(打印宽度,【填充字符】)
rjust(打印宽度,【填充字符】)

replace(‘str’,‘str’,[次数]) 替换 生成新字符串

strip()默认去除两端空白字符 返回新字符串
lstrip() rstrip() 左右去除空白字符

strip(str) 左右能匹配到的都移除,停止于匹配不到的第一个字符

find(sub[,start[,end]])从左至右查找 前包后不包
rfind从右至左查找
返回匹配字符串的第一个字符之索引
找不到返回-1
index找不到会报错

count(‘str’)查看匹配次数

startswith(suffix,[start[end]])
endswith(suffix,[start[end]])
判断是否以字符串开头结尾 返回bool值 前包后不包

字符串格式化
支持关键字传参
{}占位符
{{}}表示花括号本身
‘{m[n]}’.format([a,b,c]) 可以取对应的列表中的索引
‘{m.n}’.format(m) 可以取namedtuple中的对应属性值

import datetime
d=datetime.datetime.now()
datetime.datetime(2019, 3, 29, 20, 40, 8, 129085)

‘{}’.format(d)
‘2019-03-29 20:40:08.129085’

‘{:%*}’ 筛选出对应属性字段显示,可用-连接格式化显示
%Y年 %m月 %d日期 %H小时 %M分钟 %S秒

‘{:</>n}’.format() 宽度n 左/右对齐
‘{:填充符^n}’.format() 宽度n 居中对齐 空余地方使用填充符填充

‘{:m.n%}’.format() 转换成百分比显示 宽度m 精度n

字符串判断is系列
str.isalnum()是否是字母和数字组成
str.isalpha()是否是字母
str.isdecimal()是否只包含十进制数字
str.isdigit()是否全部数字(0~9)
str.isidentifier()是不是字母和下划线开头,其他都是字母、数字、下划线(检查是否符合标识符定义规则)
str.islower()是否都是小写
str.isupper()是否全部大写
isspace()是否只包含空白字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值