Python元组详解

显示元组中索引为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):

self.name = name

def repr(self):

return ‘Item({!r})’.format(self.name)

q = PriorityQueue()

q.push(Item(‘AAA’), 1)

q.push(Item(‘BBB’), 4)

q.push(Item(‘CCC’), 5)

q.push(Item(‘DDD’), 1)

print(q.pop())

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

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

(img-om8xGEhR-1712848339513)]

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6BUClTJR-1712848339514)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值