Python元组详解(1)

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

(2)访问:

元组和字符串以及列表类似,索引都是从0开始,并且可以进行截取和组合等操作。

如下:

tuple1 = (‘xiaoming’, ‘xiaohong’, 18, 21)

tuple2 = (1, 2, 3, 4, 5)

显示元组中索引为1的元素的值

print(“tuple1[1]:”, tuple1[0])

显示元组中索引从1到3的元素的值

print(“tuple2[1:3]:”, tuple2[1:3])

在这里插入图片描述

2.元组的 修改 && 删除


(1)元组的修改:

虽然在开头就说元组不可变,但是它还是有个被支持的骚操作——元组之间进行连接组合:

tuple1 = (‘xiaoming’, ‘xiaohong’, 18, 21)

tuple2 = (1, 2, 3, 4, 5)

tuple_new = tuple1 + tuple2

print(tuple_new)

在这里插入图片描述

(1)元组的删除:

虽然元组不可变,但是却可以通过del语句删除整个元组。

如下:

tuple1 = (‘xiaoming’, ‘xiaohong’, 18, 21)

print(tuple1) # 正常打印tuple1

del tuple1

print(tuple1) # 因为上面删除了tuple1,所以再打印会报错哦!

在这里插入图片描述

3.元组的内置方法


元组是不可变,但是我们可以通过使用内置方法来操作元组。常用的内置方法如下:

  1. len(tuple):计算元组元素个数;

  2. max(tuple):返回元组中元素的最大值;

  3. min(tuple):返回元组中元素的最小值;

  4. tuple(seq):将列表转换为元组。

其实更多时候,我们是将元组先转换为列表,操作之后再转换为元组(因为列表具有很多方法~)。

4.将序列分解为单独的变量


(1)

Python允许将一个包含N个元素的元组或序列分别为N个单独的变量。这是因为Python语法允许任何序列/可迭代对象通过简单的赋值操作分解为单独的变量,唯一的要求是变量的总数和结构要与序列相吻合。

如下:

tuple1 = (18, 22)

x, y = tuple1

print(x)

print(y)

tuple2 = [‘xiaoming’, 33, 19.8, (2012, 1, 11)]

name, age, level, date = tuple2

print(name)

print(date)

在这里插入图片描述

如果要分解未知或任意长度的可迭代对象,上述分解操作岂不直接很nice!通常在这类可迭代对象中会有一些已知的组件或模式(例如:元素1之后的所有内容都是电话号码),利用“*”星号表达式分解可迭代对象后,使得开发者能轻松利用这些模式,而无须在可迭代对象中做复杂操作就能得到相关的元素。

在Python中,星号表达式在迭代一个变长的元组序列时十分有用。如下演示分解一个待标记元组序列的过程。

records = [

(‘AAA’, 1, 2),

(‘BBB’, ‘hello’),

(‘CCC’, 5, 3)

]

def do_foo(x, y):

print(‘AAA’, x, y)

def do_bar(s):

print(‘BBB’, s)

for tag, *args in records:

if tag == ‘AAA’:

do_foo(*args)

elif tag == ‘BBB’:

do_bar(*args)

line = ‘guan:ijing234://wef:678d:guan’

uname, *fields, homedir, sh = line.split(‘:’)

print(uname)

print(*fields)

print(homedir)

print(sh)

在这里插入图片描述

(2)

在Python中迭代处理列表或元组等序列时,有时需要统计最后几项记录以实现历史记录统计功能。

使用内置的deque实现:

from _collections import deque

q = deque(maxlen=3)

q.append(1)

q.append(2)

q.append(3)

print(q)

q.append(4)

print(q)

在这里插入图片描述

如下——演示了将序列中的最后几项作为历史记录的过程。

from _collections import deque

def search(lines, pattern, history=5):

previous_lines = deque(maxlen=history)

for line in lines:

if pattern in line:

yield line, previous_lines

previous_lines.append(line)

Example use on a file

if name == ‘main’:

with open(‘123.txt’) as f:

for line, prevlines in search(f, ‘python’, 5):

for pline in prevlines: # 包含python的行

print(pline) # print (pline, end=‘’)

打印最后检查过的N行文本

print(line) # print (pline, end=‘’)

123.txt:

pythonpythonpythonpythonpythonpythonpython

python

python

在这里插入图片描述

在上述代码中,对一系列文本行实现了简单的文本匹配操作,当发现有合适的匹配时,就输出当前的匹配行以及最后检查过的N行文本。使用deque(maxlen=N)创建了一个固定长度的队列。当有新记录加入而使得队列变成已满状态时,会自动移除最老的那条记录。当编写搜索某项记录的代码时,通常会用到含有yield关键字的生成器函数,它能够将处理搜索过程的代码和使用搜索结果的代码成功解耦开来。

5.实现优先级队列


使用内置模块heapq可以实现一个简单的优先级队列。

如下——演示了实现一个简单的优先级队列的过程。

import heapq

class PriorityQueue:

def init(self):

self._queue = []

self._index = 0

def push(self, item, priority):

heapq.heappush(self._queue, (-priority, self._index, item))

self._index += 1

def pop(self):

return heapq.heappop(self._queue)[-1]

class Item:

def init(self, name):

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值