当前位置: 首页 > news >正文

【基础知识】Python入门:序列

序列

列表、元组和字符串都统称为序列

可分为可变序列和不可变序列,列表是可变序列,元组和字符串是不可变序列

1、能够作用于序列的运算符和函数

加号和乘号:+、*

is、is not:检测对象id值是否相等(不等),是否是(不是)同一个对象,叫同一性运算符

x = 'fishc'
y = 'fishc'
x is y
True
x = [1,2,3]
y = [1,2,3]
x is y 
False

in、not in:用于判断某一个运算符是否包含(不包含)在序列中

"鱼" in "鱼C"
True
'fish' in 'fishc'
True

del语句:用于删除一个或多个对象,或者删除可变序列中的指定元素del list[start: end]

x = 'fishc'
y = [1,2,3]
del x,y
x
Traceback (most recent call last):File "<pyshell#22>", line 1, in <module>x
NameError: name 'x' is not defined
y
Traceback (most recent call last):File "<pyshell#23>", line 1, in <module>y
NameError: name 'y' is not definedx = [1,2,3,4,5]
del x[1:4]
x
[1, 5]
y = [1,2,3,4,5]  #切片也可以实现
y[1:4] = []  
y
[1, 5]x = [1,2,3,4,5]
del x[::2]
x
[2, 4]
y = [1,2,3,4,5]
y[::2] = []  #切片无法实现
Traceback (most recent call last):File "<pyshell#34>", line 1, in <module>y[::2] = []
ValueError: attempt to assign sequence of size 0 to extended slice of size 3x = [1,2,3,4,5]
x.clear()
x
[]
x= [1,2,3,4,5]
del x[:] #不可以写del x
x
[]

clear():清除列表中的元素

[1, 2, 3] +[4, 5, 6]
[1, 2, 3, 4, 5, 6]
(1, 2, 3 ) +(4, 5, 6)
(1, 2, 3, 4, 5, 6)
'123'+'456'
'123456'
[1, 2, 3] *3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
(1, 2, 3 )*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
'123'*3
'123123123'
s = [1,2,3 ]
id(s) #代表对象的唯一标志的整数值
2082339126144
s *= 2
s
[1, 2, 3, 1, 2, 3]
id(s)
2082339126144
t = (1, 2, 3 )
id(t)
2082339265536
t *=2
id(t)
2082333913632

2、跟序列相关的一些函数

list()、tuple()、str():列表、元组、字符串相互转换,参数为可迭代对象

list("fishc")
['f', 'i', 's', 'h', 'c']
list((1,2,3,4,5)) #元组
[1, 2, 3, 4, 5]
tuple("fishc")
('f', 'i', 's', 'h', 'c')
tuple([1,2,3,4,5])
(1, 2, 3, 4, 5)
str([1,2,3,4,5])
'[1, 2, 3, 4, 5]'
str((1,2,3,4,5))
'(1, 2, 3, 4, 5)'

min()、max():对比传入的参数,返回最小值或者最大值,当传入的可迭代对象为空,且default未设置时会报错,若设置了default,则输出default指定的内容。

s = [1,1,2,3,5]
min(s)
1
t = 'fishc'
max(t)
's' #对比编码值s = []
min(s)
Traceback (most recent call last):File "<pyshell#52>", line 1, in <module>min(s)
ValueError: min() iterable argument is empty
min(s, default = "屁,啥都没有,怎么找最小")
'屁,啥都没有,怎么找最小'
min(1,2,3,4,0,9)
0
max(1,2,3,0,9)
9

image-20260528140558522

len():在底层是直接读取C语言结构体里面的对象的长度,有一个能读取的最大长度,对于32为平台来说,这个长度是231-1,对于64位平台来说是263-1。

len(range(2**100))
Traceback (most recent call last):File "<pyshell#56>", line 1, in <module>len(range(2**100))
OverflowError: Python int too large to convert to C ssize_t

sum():其中可选一个start参数,会将该参数加到求和的可迭代对象里面。

s = [1,0,0,8,6]
sum(s)
15
sum(s, start = 100)
115

sorted():返回一个全新的排序后的列表,与列表的sort()方法区分开。同样支持key与reverse参数,使用方法与sort()一致。可接受任何形式的可迭代参数

s = [1,2,3,0,6]
sorted(s)
[0, 1, 2, 3, 6]
s
[1, 2, 3, 0, 6]
s.sort()
s
[0, 1, 2, 3, 6]
sorted(s, reverse = True)
[6, 3, 2, 1, 0]t = ["FsichC","Apple", "Book", "Banana", "pen"]
sorted(t) #对比每一个元素,每一个字符串的编码值
['Apple', 'Banana', 'Book', 'FsichC', 'pen']
sorted(t, key =len) #以长度来比较
['pen', 'Book', 'Apple', 'FsichC', 'Banana']
t.sort(key = len)
t
['pen', 'Book', 'Apple', 'FsichC', 'Banana']sorted("Fishc")
['F', 'c', 'h', 'i', 's']
sorted((1,0,0,8,6))
[0, 0, 1, 6, 8]

reversed():返回的是一个参数的反向迭代器,暂且当做一个可迭代对象来看。

s = [1,2,5,8,0]
reversed(s)
<list_reverseiterator object at 0x000001E4D516BD90>
list(reversed(s))
[0, 8, 5, 2, 1]
list(reversed("FishC"))
['C', 'h', 's', 'i', 'F']

all():判断可迭代对象中是否所有元素的值都为真

any():判断可迭代对象中是否存在某一个元素的值为真

x = [1,1,0]
y = [1,1,9]
all(x)
False
all(y)
True
any(x)
True
any(y)
True

enumerate():用于返回一个枚举对象,它的功能就是将可迭代对象中的每个元素及从0开始的序号共同构成一个二元组的列表。start参数:用于指定序号开始的值。

seasons = ["Sprint", "Summer", "Fall", "Winter"]
enumerate(seasons)
<enumerate object at 0x000001E4D515AF70>
list(enumerate(seasons))
[(0, 'Sprint'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, 10))
[(10, 'Sprint'), (11, 'Summer'), (12, 'Fall'), (13, 'Winter')]

zip():用于创建一个聚合多个可迭代对象的迭代器。他会将作为参数传入的每个可迭代对象的每个元素依次组合成元组,即第i个元组包含来自每个参数的第i个元素。

x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
list(zipped)
[(1, 4), (2, 5), (3, 6)]
z = [7,8,9]
zipped = zip(x,y,z)
list(zipped)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
z = "FishC"
zipped = zip(x,y,z)
list(zipped)
[(1, 4, 'F'), (2, 5, 'i'), (3, 6, 's')] #多余会被丢掉

若传入的可迭代对象的长度不相等,则以最短的为准,将多余的元素抛弃。若不想丢弃多余的元素,则可以使用itertools模块中的zip_longest()函数来代替zip()。

import itertools
zipped = itertools.zip_longest(x,y,z)
list(zipped)
[(1, 4, 'F'), (2, 5, 'i'), (3, 6, 's'), (None, None, 'h'), (None, None, 'C')]

map():根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器

mapped = map(ord, "FishC") #map(方法,对象)
list(mapped)
[70, 105, 115, 104, 67]

若提供的函数需要两个或者多个参数时,只需要同时去调整可迭代对象的数量即可。

mapped = map(pow, [2,3,10], [5,2,3])
list(mapped)
[32, 9, 1000]

若提供的可迭代对象的长度不一致时,以最短的可迭代对象为准,抛弃掉多余的。

list(map(max, [1,3,5], [2,2,2], [0,3,9,8]))
[2, 3, 9]

filter():与map()函数类似,根据提供的函数对指定的可迭代对象的每个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回。

list(filter(str.islower, 'FishC'))
['i', 's', 'h'] #返回小写字母

3、迭代器与可迭代对象

一个迭代器肯定是一个可迭代对象

可迭代对象是可以重复使用的,但是可迭代器是一次性的。

iter():将一个可迭代对象变为一个迭代器。

next():逐个将迭代器中的元素提取出来

mapped = map(ord,"FishC") #map返回迭代器
for each in mapped:print(each)70
105
115
104
67
list(mapped)
[]x = [1,2,3,4,5]
y = iter(x)
type(x)
<class 'list'>
type(y)
<class 'list_iterator'>
next(y)
1
next(y)
2
next(y)
3
next(y)
4
next(y)
5
next(y) #会报异常,而非错误
Traceback (most recent call last):File "<pyshell#123>", line 1, in <module>next(y)
StopIterationz = iter(x)
next(z, "没啦")
1
next(z, "没啦")
2
next(z, "没啦")
3
next(z, "没啦")
4
next(z, "没啦")
5
next(z, "没啦")
'没啦'
http://www.jsqmd.com/news/918112/

相关文章:

  • 2026年4月有名的塑料垃圾桶生产厂家口碑推荐,塑料周转框/塑料水箱/塑料周转筐/塑料垃圾桶,塑料垃圾桶厂家推荐分析 - 品牌推荐师
  • 201_002 Zynq7000 SoC PS资源介绍
  • 【AI工具故障排除黄金法则】:20年SRE专家亲授7大高频故障的秒级定位与修复流程
  • 杭州黄金回收哪家靠谱?拱墅、上城、萧山三店横评实录 - 百福黄金回收
  • 从零打造仿生机械手:Arduino控制与3D打印实战指南
  • 低调的黑客
  • 2026年杭州企业必看:如何选择可靠的GEO源码部署公司深度指南 - 品牌报告
  • D2DX:终极暗黑破坏神2现代化补丁,让经典游戏完美适配现代PC
  • 2026加拿大工程院院士:14位华人院士,占比1/4
  • 仅限技术决策者查阅:AI搜索引擎隐私SLA对比矩阵(含数据驻留地、第三方共享协议、删除SLA时效),17家厂商原始条款逐条标注
  • Claude 3.5究竟强在哪?弱在哪?(附237项原子能力打分矩阵):这份被3家FAANG内部传阅的竞品分析PDF正在失效
  • 2026四川成都+都江堰+青城山+九寨沟7天6晚导游排行榜|实测与避坑 - 随峰国旅
  • 浏览器如何解析HTML头部:底层逻辑揭秘
  • 剑与翼 - 经典复刻 1.03 测评:老玩家的青春归处,新玩家的复古乐园
  • 软考中级题库哪个好?真题、模拟题和刷题软件推荐 - 众智商学院官方
  • 国产元器件不敢用?缺的不是技术,是一个“能放心”的采购平台
  • 终极QMC解码指南:3分钟快速解锁QQ音乐加密音频的完整教程
  • 从零开始在 Linux 上编译运行 lvgljs 图形界面项目
  • Navicat Premium连不上SQL Server?别慌,先检查这两个新手最容易踩的坑
  • 郑州奔驰车主必看:2026 专业专修改装机构大盘点,郑州 666 奔驰改装俱乐部凭实力领跑 - 焦点微观察
  • 上海防水施工安全有保障吗?芮生建设全员投保杜绝施工风险 - 十大品牌榜单
  • TCP和HTTP协议有什么区别?
  • 【RT-DETR实战】098、Web端部署实战:当RT-DETR遇上TensorFlow.js的坑与解法
  • 2026金属花箱多少钱?影响价格的关键因素解析
  • 2026年绍兴黄金回收商情快讯:奢响佳回收究竟靠谱吗? - 天天生活分享日志
  • 乡村公共服务设施优化布局的地理计算方法【附仿真】
  • 如何将B站缓存视频从m4s格式转换为通用mp4:简单三步搞定
  • 2026论文降AI率网站:11款工具实测谁靠谱? - 降AI小能手
  • 2026四川成都+峨眉山+乐山大佛6天5晚导游推荐|口碑路线分析 - 随峰国旅
  • 佛山AI短视频哪个靠谱