流畅的python笔记1.1

基于流畅的Python第二版学习笔记 立即下载

1.1 一摞python风格的纸牌

首先,创建纸牌类:

#coding=utf-8\
import collections

#利用collections.namedtuple创建一个类,名字叫Card,类中只有属性没有方法,
#含有属性‘rank’,‘suit’
Card = collections.namedtuple('Card', ['rank', 'suit'])

class FrenchDeck:
    ranks = [str(n) for n in range(2,11)] + list('JQKA')
    suits = 'spades diamonds clubs hearts'.split()
    def __init__(self):
        self._cards = [Card(rank, suit) for suit in self.suits
                                        for rank in self.ranks]
        
    def __len__(self):
        return len(self._cards)
    def __getitem__(self, position):
        return self._cards[position]

该步骤创建了一个FrenchDeck类,类中的_cards属性为一个列表,列表中的元素为Card类的实例

#创建实例
beer_card = FrenchDeck()
print(len(beer_card))
print(beer_card[0])
print(beer_card[-1])

运行结果:

52
Card(rank='2', suit='spades')
Card(rank='A', suit='hearts')
由于__getitem__方法的存在,可以用random.choice方法来随机抽取,如下:

deck = FrenchDeck()
from random import choice
print(choice(deck)) 
print(choice(deck)) 
print(choice(deck)) 

结果:

Card(rank='5', suit='clubs')
Card(rank='2', suit='hearts')
Card(rank='4', suit='clubs')


可见__getitem__方法并非只可以用于取值,还可以用于与列表属性相关的其他内容中,如切片操作:

deck = FrenchDeck()
print(deck[:3])
print(deck[12::13])#从索引12开始,每隔13张拿一张牌

结果:

[Card(rank='2', suit='spades'), Card(rank='3', suit='spades'), Card(rank='4', suit='spades')]
[Card(rank='A', suit='spades'), Card(rank='A', suit='diamonds'), Card(rank='A', suit='clubs'), Card(rank='A', suit='hearts')]

此外,__getitem__方法还可以使实例变得可迭代:

deck = FrenchDeck()
for card in deck:
    print(card)
结果:

Card(rank='2', suit='spades')
Card(rank='3', suit='spades')
Card(rank='4', suit='spades')
Card(rank='5', suit='spades')
Card(rank='6', suit='spades')
...

反向迭代亦可:

deck = FrenchDeck()
for card in reversed(deck):
    print(card)
结果:

Card(rank='A', suit='hearts')
Card(rank='K', suit='hearts')
Card(rank='Q', suit='hearts')
Card(rank='J', suit='hearts')
Card(rank='10', suit='hearts')
Card(rank='9', suit='hearts')

in运算符也可以使用:

deck = FrenchDeck()
print(Card('Q','hearts') in deck)
#结果为True


综上所述:

__getitem__方法可以:

1.实例可切片

2.可被random.choice方法调用

3.可以迭代(反向也可以)

4.可使用in运算符





Windows 11 安装 MySQL 8.4:安装包方式、下载、安装、使用 本文详细介绍了在 Windows 11 系统下通过 MSI 安装包方式安装 MySQL 8.4 LTS 社区版的完整流程,包括版本选择、下载、自定义安装路径、服务配置、日志设置、示例数据库创建及后续使用方法。同时提供了命令行客户端与图形化工具 DBeaver 的连接与操作演示,适合初学者和开发者快速搭建本地 MySQL 开发环境。 阅读详情

相关推荐

从原理到实战:N4偏置场校正算法在医学影像预处理中的核心应用

本文深入解析N4偏置场校正算法在MRI医学影像预处理中的核心应用,从原理到实战全面覆盖。通过Python代码实现演示,详细讲解如何消除MRI扫描中的偏置场效应,提升图像质量,并分享量化评估与参数调优的实用技巧,帮助医学影像分析准确率显著提升。

weixin_42531710的博客 392

流畅的python

第一章:python数据模型 1.1 如何使用特殊方法 模拟数值类型,字符串表示形式,算术运算符,自定义的布尔值 1.2 特殊方法一览 1.3 为什么len不是普通方法 第二章:序列构成的数组 2.1 内置序列类型概览 2.2 列表推导和生成器表达式 列表推导和可读性,列表推导同filter和map的比较,笛卡尔积,生成器表达式 2.3 元组不仅仅是不可变的列表 元组和记录,元组拆包,具名元组,作为不可变列表的元组 2.4 切片 为什么切片和区间会忽略最后一个元素,对对象进行切片,多

liguandong 3755

CarPlay盒子选购避坑指南:为什么你的车机破解了却用不了?从USB设备ID说起

本文深入解析CarPlay盒子硬件兼容性问题,从USB设备ID匹配到车机适配逻辑,揭示破解成功却无法使用的根本原因。通过分析USB设备识别的核心要素和逆向工程usb_device_manager.xml文件,提供三种主流解决方案对比,并强调操作中的硬件保护机制,帮助车主避免常见陷阱。

weixin_30706691的博客 477

流畅的Python(Fluent Python)

1.1 The Python Data Model A Pythonic Card Deck 介绍了特殊方法,也叫做魔术方法 import collections Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs h

Devlegal的博客 3400

RAG优化知识库检索(4):混合检索技术

混合检索技术在RAG(检索增强生成)系统中的应用显著提升了检索效果。本文探讨了语义检索与关键词检索的优缺点,指出两者在语义理解和精确匹配方面的互补性。通过结合BM25与向量检索,混合检索系统能够更全面地捕捉文档的相关性。文章详细介绍了并行检索、级联检索、稀疏-密集混合表示等多种结合方式,并探讨了权重调整策略,如线性组合、动态权重调整和排序融合算法。此外,稀疏-密集混合检索架构的设计和实现方案也被深入分析,展示了如何通过结合不同检索方法的优势,提升RAG系统的检索质量和效率。

分享一些感兴趣的技术方面 2073

避坑指南:DeepSeek Function calling流式输出中的常见问题与解决方案

本文深入探讨了在DeepSeek Function Calling中实现流式输出时常见的参数拼接、函数依赖管理和错误处理等核心挑战。针对流式响应中参数碎片化的问题,提供了健壮的参数拼接方案与状态管理策略。同时,文章详细阐述了如何管理函数调用顺序、处理条件性执行,并构建了分阶段的错误处理与重试机制,旨在帮助开发者构建稳定、高效的流式AI应用。

weixin_29062671的博客 204

《流畅的Python》(Fluent Python)PDF

流畅的Python》(Fluent Python):Luciano Ramalho著,深入理解Python语言特性与最佳实践。(访问密码: 7776)(注:文档仅为个人学习使用)了解AI内容,也可以查看之前相关文章。

zhuwujie0331的博客 2460

实验手册(灾难恢复)

我们发现DC1与DC2的复制出现问题,此时我们检查了在DC2中,DC1是否被正确注册。这里选择还原系统状态,因为我们原DC1上只备份了AD的数据,所以我们在新的这台服务器上还原的也是AD数据库。因为我们是单域下的测试,只测试了一个域,所以它会出现这样的报错。我们选择远程共享文件夹,我们备份的时候,是在备份这台服务器上的。同时删除SRV记录,A记录,NS记录,SOA记录,框框里面的所有有关dc1的记录全部删除。如果在企业中AD数据的备份是每周或者每月都会有一次备份,选择恢复AD数据库的时间。

weixin_52364868的博客 1310

《流畅的Python》

人们总是倾向于寻求自己熟悉的东西。受到其他语言的影响,你大概能猜到 Python 会支持正则表达式,然后就会去查阅文档。但是如果你从来没见过元组拆包(tuple unpacking),也没听过描述符(descriptor)这个概念,那么估计你也不会特地去搜索它们,然后就永远失去了使用这些 Python 独有的特性的机会。原文链接:https://blog.csdn.net/weixin_43820463/article/details/121196740。

weixin_45309266的博客 667

光学传播仿真软件:SPEOS_(14).建筑物内光环境仿真

在建筑物内光环境仿真中,材料属性的定义直接影响光的传播和反射效果。SPEOS提供了丰富的材料库,但也可以自定义材料属性以满足特定需求。创建新材料选择Materials->。输入材料名称和类型。配置材料属性选择材料对象,打开属性编辑器。设置反射率、透射率、表面粗糙度和颜色。# 导入SPEOS模块# 创建新材料# 配置材料属性custom_material.set_reflectivity(0.8) # 设置反射率为0.8。

kkchenjj的博客 1251

实战:从零构建第一个 HarnessAgent

本文介绍了如何从零构建第一个HarnessAgent项目。主要内容包括:1) 环境准备,要求JDK17+和Maven3.8+;2) 项目结构说明;3) 快速入门示例,包含工作区初始化、模型构建、Agent配置和对话演示;4) 多轮对话场景模拟。关键点在于通过sessionId实现对话状态保持,利用自动记忆沉淀和工作区持久化实现对话历史恢复。项目还展示了对话压缩配置,可在消息数达到阈值时自动压缩并保留关键事实,体现了HarnessAgent的核心能力。

公众号:AI前沿侦探 379

流畅的python--小技巧总结

前端老鸟的python之路对于python菜鸟来说,只看基本教程后的结果就是看是看过了,但依然不会用,遇事先百度;此文整理了一些python区别于js的一些小技巧(鄙人前端学py),可以快速高效实现功能,当个笔记,后面会持续更新版本:python3.x。

mate1357的博客 237

Calibre:LVS 快速debug short/open技巧

用Fix Suggestion和Short Isolate两种方法debug LVS问题

m0_61544122的博客 7463

【流畅的python》4.1 节学习笔记 --- 编码与解码】

本文为《流畅的python》的4.1节的学习笔记。编码解码的作用。编码解码的错误处理。

OnlyMars的博客 430

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

《流畅的python》 1.1笔记

import collections from random import choice Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self):.

Halicam的博客 838

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《流畅的python》1.2 笔记

要写一个模拟向量的类,要满足以下几点: 向量相加时结果还是向量,而且可以被很好的打印出来 abs(vector)会返回向量的模 向量的数量积

Halicam的博客 1376

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

《流畅的 Python》第 1章:学习笔记

:使 deck[0]、deck[-1]、切片 deck[:3]、for card in deck、random.choice(deck) 等操作生效。例如:json模块的dump()函数不关心对象类型,只检查是否实现了__iter__协议。_,FrenchDeck 自动成为可迭代对象(Python 回退机制)。_:使 len(deck) 可用 → 返回牌组总张数。

wjp1073041977的博客 827

《流畅的Python》 2.1 笔记

Collections.namedtuple函数 from collections import namedtuple City = namedtuple('City', ['name', 'country']) #City = namedtuple('City', 'name country') 这个写法也是可行的 Beijing = City('Beijing', 'China') print(Beijing.country) #调用Beijing的country属性 namedtuple有两个

Halicam的博客 673

【流畅的python 1.1-1学习笔记】

本文为《流畅的python》的1.1节的学习笔记。

OnlyMars的博客 541

看流畅的python感觉有难度_《流畅的python》阅读笔记1:切片及原理

本文分以下部分来讲1:什么场景下我们会用到切片?2:实现切片的原理,基于此,我们如何实现一个支持切片操作的自定义类型?下面说下什么场景下我们会用到切片?当我们想截取一段代码,怎样操作呢?比如下面:list = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]array1 = array('d', list)components = reprlib.repr(arra...

weixin_39725756的博客 135

《流畅的Python》学习笔记 第1章

之前也用Python写过爬虫,处理过数据,但是感觉理解还是挺浮于表面的,很多Python的特性都不是很了解。所以决定跟着一本书来帮助自己更深入地理解Python。最后选择了这本《流畅的Python》。在学习的过程中发现确实能学到很多东西,作者的讲解也非常深入浅出,很容易理解并且让人感到Python的魅力,译者的翻译也很好。 并且在读这本书的过程中,真的发现自己对Python的了解还太少,很多函数

RachelJia的博客 316

《流畅的Python》——读书笔记(1)

阅读《流畅的python》英文名《Fluent Python》的个人笔记(1)。包含序幕、数据结构、把函数视作对象、面向对象惯用法,四大部分。

aruihuang的博客 228

【python】《流畅的python》读书笔记之第1-2章

流畅的python》是还在上学时就被安利的一本奇书,马克了很久一直没机会系统拜读。最近碰巧偶得第二版的pdf。经济周期的下行阶段正是用来学习充电的,于是乎打算捡起荒废许久的blog,读读书,写写字,蓄势待东风。

玄云飘风的博客 565

流畅的python笔记1.2

1.2 如何使用特殊方法 首先创建类: #coding=utf-8\ from math import hypot class Vector: def __init__(self, x=0, y=0): self.x = x self.y = y #pythonz中有一个内置函数repr,能将一个对象以字符串的形式表达出来以便辨认 def

Hanx_22的博客 498

《流畅的python》阅读笔记1:杂谈

1 这本书主要讲了什么呢?给我最大的收获是什么?以前我不太懂魔法函数的作用,这次我明白,魔法方法,可以让你自定义的对象,实现一些跟python内置对象一样的方法和操作,比如说,你的类实现__repr__,那么你就可以apply(repr(a)),来创建一个对象。比如你实现了__eq__,你就可以比较两个对象是不是一样。你自定义的对象有着跟python一样的操作符。这就是python的一致性,它让调用你写的类的用户学习成本降低,你只要像操作内置对象一样操作你的对象就行了。 2 作者先是讲解了python一些内

tan_liang_liang的博客 370

流畅的python第一章_流畅的python学习笔记-第1章

第1章 序幕这一章中作者简要的介绍了python数据模型,主要是python的一些特殊方法。比如__len__,__getitem__. 并用一个纸牌的程序来讲解了这些方法tuple和nametuple的区别Nametuple是类似于元组的数据类型。除了能够用索引来访问数据,还支持用方便的属性名来访问数据。传统的元组访问如下。tup1 = ('abc', 'def', 'ghi')print(tu...

weixin_39721000的博客 191
上一篇: rnn decoder
下一篇: 流畅的python笔记1.2
Hanx_22
博客等级 码龄10年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值