(讲的很快,光哥志不在此)
集合是无序可变序列,用大括号界定。每个元素都是唯一的,定义时哪怕出现重复
元素也会被忽略
法一:直接将集合赋值给变量
例:>>>s={'spam','eggs','ham'}
>>>s
set(['eggs','ham','spam'])
法二:使用set()函数将元组,列表等可迭代对象转化为集合,同时过滤重复元素
例:>>>s=set((1,))
>>>s
set([1])
>>>s=set([1,2,3,1,2,3])
>>>s
set([1,2,3])
*空集合的构造要用set函数而不是用{},后者返回类型会是dict
例:
>>>s=set()
>>>type(s)
>>>s={}
>>>type(s)
用del命令删除整个集合
用.pop() .remove() .clear()方法删除单个元素
*set类型的.pop()是没有参数的,pop哪一个是不定,.remove()则是可以指定弹出的
例:
>>>s.pop('spam') 会报错
>>>s.pop()
'eggs'
>>>s
set(['ham','spam'])
>>>s.remove('ham')
>>>s
set(['spam'])
交集 a|b a.union(b)
交集 a&b a.intersection(b)),
差集 a-b a.difference(b))
例:
>>>s={x.strip() for x in ('he','she','I')}
>>>s
set(['I','she','he'])
(简单介绍了下OrderDict()和Counter(),具体让我们自己去看官方文档和PPT)
collection模块是对python内置复合数据结构的补充,使用时要自己import
如果我们想要一个有序字典该怎么办? 用OrderedDict()
如果我们想要一个计数器(比如key是某些名词字符串,后面的value是它出现的次数,每出
现一次自动加个1),这个时候我们不需要自己写,可以用Counter()
(这一章直接水掉了,没讲多少东西。主要还是自己看PPT,以下只列出他稍微强调了几下的点)
*关系运算符可以连用(如 75<=i<=85)
例子:
>>>1<2>3
False
>>>1<3>2
True
>>>1<2<3
True
“==” 和"is"的区别
“ =="测试值是否相等,"is"测试对象是否是同一对象(即是否在同一内存地址中)
*番外:类对象的相等判断(类和重载都没讲,课件例子里的细节等学完了再看)
python有缓存复用机制,但是稍微复杂点就不再复用。用户自己定义的类则没有那么简单。比如下面这个例子
例子:
>>>class Spam(object):
pass
>>>a=Spam()
>>>b=Spam()
>>>a is b,a==b
(False,False)
为了让python能让自己所想的那样来判断a==b是否成立,需要自己告诉python什么时候相等什么时候不相等。要做到这点需要重载方法(或者说内置函数),例子里就重载了两种方法(def _ eq _ (self,other),def _ ne(self,other)),实际上这两个方法的结构已经由python帮你定义好了。课件最后提供了python帮你提前定义好的一些方法框架,内部具体的逻辑需要你自己去填充
在Python中,整数0代表假(False),整数1代表真(True)。Python也把任意的空数据结构视为假,把任意非空的数据结构视为真。 在选择和循环结构中,条件表达式的值只要不是False,0(或0.0,0j等),None,空列表,空元组,空集合,空字典,空字符串,空range对象或其他空迭代对象,Python解释器均认为与True等价。 因此几乎所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。
*and与or逻辑运算符
*打选择结构的时候不要忘了冒号,还有elif关键字与C语言不同。python没有switch语句全部通
过elif来实现
*双分支结构的特殊写法
*python中,while和for循环都可以带else块
例子:
while test1:
statement1
if test2: break
if test3: continue
statement2
else:
statement3
如果循环因为条件表达式不成立而自然结束(不是因为执行了break语句而结束),则执行else结构中的语句。如果循环是因为执行了break语句而导致循环提前结束,则不执行else中语句
*pass语句什么事也不做,只是起占位作用
"拷贝"是为了复制对象,从而避免对象共享可能造成的问题
拷贝的方式有:
1.列表的分片操作
例子:
>>>a=[1,2,3]
>>>b=a[:]
>>>a==b,a is b
(True,False)
2.字典,集合的.copy()方法
例子:
>>>a={'a':'aaa'}
>>>b=a.copy()
>>>a={'a'}
>>>b=a.copy()
>>>a==b,a is b
(True,False)
3.某些内置函数(如 list())能生成拷贝
例子:
>>>a=[1,2,3]
>>>b=list(a)
>>>a==b,a is b
(True,False)
*列表的[:]操作及字典的copy()方法只能做顶层复制
4.引入copy标准库模块并使用其中的copy,copy()(shallow copy)和copy.deepcopy(x)方法
*关于deep copy和shallow copy的区别,之前已经提到过多次。这里自己看课件和之前的笔记即可
编辑于2020-3-12 16:13
修改于2020-4-28 21:07