《跟老齐学python》学习笔记二(第一季第一章第六节-第一季第一章第十一节)

第一季第一章第六节主要讲述了字符编码的问题,Python2中还有这个问题,但3中几乎不涉及这个问题了,所以这里不多做笔记,仔细看一看,对以前ASCII,Unicode等编码有不错的理解,挺好的。
额外记录一点:如果对文件操作,打开文件的时候,最好用codecs.open替代open

import codecs
codecs.open('filename', encoding='utf8')

第七节:列表

  • 列表list同int,float,str一样,也是python的一种对象类型。
  • list用[]表示,这同其他语言的数组类似,但是数组中的元素必须是同一种类型,因为数组需要提前声明,说明数组类型,但列表不用,所以里面的元素可以是不同类型。
  • 列表和字符串两种类型都属于序列(都是一些对象按照某个次序排列起来,这是序列的最大特征)
  • “反转”函数,示例:
>>> lst=[1,2,3,4,5]
>>> list(reversed(lst))
[5, 4, 3, 2, 1]
  • 关于迭代,看完一次有些不懂,建议再看,其实就目前而言,还无法理解迭代和extend函数之间的关系,我对于迭代有待以后更加深入,除了文章中给出的使用函数查看,还可以用“for 元素 in 对象: printf 元素”来检验,如果可以打印出来,那么对象就是可迭代的,不过文章中示例可以看出str类型的对象是不可迭代的,不过通过实验发现是可以迭代的,不知道是文章的错误还是python 2 和3之间的区别。
  • 1.7和1.8 主要讲了列表的一些操作函数,例如反转、插入、删除等以及对于这么函数,列表和字符串的相同和不同,说实话,函数太多具体用法记不住,只能先过一遍,知道有这么个函数,可以实现什么功能,到具体用的时候再来仔细查看。
    第九节:元组
  • 1.9介绍了一个新的概念:元组。元组是用圆括号括起来的,元素之间用逗号隔开。
对比字符串列表元组
是否是序列
元素是否可改
元素类型非任意任意任意

(表格并不会建,偶然发现编辑框最后一个问好里有介绍,虽然建好了哈哈哈,但并不明白具体过程,好吧,并不重要)

特别提醒,如果一个元组中只有一个元素,应该在该元素后面加一个半角的英文逗号。
>>> a=1
>>> type(a)
<class 'int'>
>>> a=(1)
>>> type(a)
<class 'int'>
>>> a=(1,)
>>> type(a)
<class 'tuple'>

第十节:字典
- 1.10介绍了新概念,字典(dict)。在一个字典中,键是唯一的,不能重复,必须是不可变对象。值则对应于键,且值可以重复。建立字典有三种方法,具体见p123。其中最后一种为使用{}.fromkeys

>>> person={}.fromkeys(("one","two"),"hpf")
>>> person
{'one': 'hpf', 'two': 'hpf'}

这里不同的键对应同一个值,如何不同的键对应不同的值呢?

>>> person={}.fromkeys(("one","two"),("hpf","lqh"))
>>> person
{'one': ('hpf', 'lqh'), 'two': ('hpf', 'lqh')}

呃,也不是
查了一下,貌似是不可以的
类似键值对这种映射方式的数据存储方式十分高效,例如使用列表,python需要从头开始读,直到找到制定的索引值;但是使用字典便不需要,直接通过“键”来找到值,数据规模越大,这种优势越明显,因此也广泛应用于数据库中。

  • Python中的copy为浅拷贝,如何理解浅拷贝。简单讲python只存储基本数据对象,如int、str等,这些对象在复制时,会新建一个内存地址,但是对于其他数据类型,在复制时并不会新辟地址。如果在复制时想全部新建地址,就需要“深复制”,需要导入一个模块,import copy,使用copy.deepcopy进行复制。
  • 对于一个字典
>>> a={"name":"hpf"}
>>> a.clear()
>>> a
{}
>>> del a
>>> a
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    a
NameError: name 'a' is not defined
>>> 

clear为清空,del为删除。
第十一节 集合
哇,感觉开学之后每天很紧张,好几天没有看老齐了,心中有愧呐,数据库课前看一波

  • 集合(set),特点:有的可变,有的不可变;元素无顺序,不可重复
  • 可通过set()创建,或者通过{}直接创建(不提倡,有时会和字典搞混)
  • set()创建的是可变的集合,用frozenset()创建的是不可变的集合,也就是可哈希的
  • 其他的交并补等运算自己看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值