python小记

在昨天作业有一个题卡了一晚,反复觉得逻辑没问题,后来才发现是因为自己对python语言不够熟悉,还在c的脑子里,以至于忽略了除法/的问题,很可笑的一个点,一直没有发现,error了十几次π_π,决定记录一下最近老师讲的python基础,便于以后复习,希望这学期结束,可以从不懂python到了解python,或许日后到熟练应用。python还挺有趣的٩(๑o๑)۶,老师很nice,很开心最后还是选了这门课。

数据类型和表达式

1.与之前学的c不同,python定义的标识符可以有汉字,但一般不那么写
2.赋值与c不同的是,赋值语句并不返回值,因此_a=(b=b+1)_是错误的
3.与c不同,支持a,b=b,a的操作交换值

布尔型:True False
数值类型:整型 浮点型 复数
字符串:本质是字符序列,支持双向索引表示\转义 r表示不转义 不可变序列类型,不能通过索引改变值。可以用replace函数。
字符串的格式化:
1.{:格式控制标记}.format(string) [[填充]对齐][符号][#][0][宽度][分隔符][.精度][类型]
2.字符串格式运算符%
3.f-string 参考网址:https://www.python.org/dev/peps/pep-0498/
空值:None

运算符:算数运算符:注意 \\\
逻辑运算符: and or具有逻辑短路的特点

选择结构:

if<条件表达式1>:
<语句块1>
elif<条件表达式2>:
<语句块2>
else:
<语句块N>

循环结构:

while<条件表达式>:
<语句块>
for<循环变量>in<可迭代对象iterator>:
<语句块>

辅助控制:

break 打破循环
continue 继续执行下一个条件循环
else 在循环正常结束后执行

组合数据类型

序列

列表[] 长度可变,可以放多种类型 list()
索引:下标索引,可以为负值
切片:list[0:4:2]左闭右开,以2为跨度,是一种浅拷贝
集合:.index (a)返回值对应下标 .count(a)返回a出现次数
连接:+/*
布尔:all和any的区别
排序:
list.sort(key =None ,reverse=False) 默认为升序,即False,key可以写为函数。
sorted(list,key=None,reversed=False)
拆封:list=[1,2,3] (,b,)=list即b=2
修改删除:del list[3]
s.append(x)将x添加到列表末尾,列表长度加1
s.clear()删除整个列表,s为空列表,等于dels[:]
s.copy()复制出一个新列表,返回给调用者,复制过程为浅拷贝。
s.extend(t)把可迭代对象t附加到s的尾部s.insert(i,x)在下标为i的位置插入对象x,i以后的元素后移
s.pop([i])如果不指定i,则返回列表最末尾的对象并从列表中删除该对象。如果指定i则返回列表中第i个位置的对象并将其从列表中删除。列表为空或i超过正常范围时该方法出错
s.remove(x)从列表中找到第一次出现的x并删除,若无x出错s.reverse()将数据项反序构成新列表
s.sort()列表排序

元组()
不可变数据类型,0个或多个数据的有序序列 tuple()
索引,切片,连接

集合

集合的各数据项必须为可哈希对象,且不可重复。分为可变集合和不可变集合两种。
set(iterable):创建可变集合:set([1,2,3])
frozenset:创建不可变集合:frozenset([1,2,3])
空集合:set(),不能用{}
可变集合独有的方法
s.add(x)
将数据项x添加到s中,如果s中尚未有x。
s.clear()
清空集合。
s.remove(x)
从s中删除x,若x不存在,导致KeyError错误。
s.discard(x)
若s中存在x,从s中删除x(不是删除对象x)。
s.pop()
随机返回s中的一个元素,并且该元素从s中
删除,若s为空,发生KeyError错误。
s1.union(s2,…)
求并集:s1=s1∪s2∪…。
s1.intersection_update(s2,…)
求交集:s1=s1∩s2∩…。
s1.difference_update(s2,…)
求差集:s1=s1-s2-…。
s1.symmetric_difference_update(s2)
求对称差集:s1=s1△s2。

字典 key=>value

字典{} 是一种映射类型,每项数据为键-值对,键不可重复,且必须是可hash对象,对值无要求 dict()
d[key]=value
d.keys()
返回字典所有key构成的列表。
d.values()
返回字典所有value构成的列表。
d.items()
返回字典所有(key,value)对构成的列表。
d.clear()
删除所有数据项,字典变成空字典。
d.copy()
浅拷贝字典,注意字典的值都是对象引用。
d.get(k)
返回键为k的值,若k不存在,返回None。
d.get(k,v)
返回键为k的值,若k不存在,返回v。
d.pop(k)
返回键为k的值,若k不存在,出现KeyError。若k存在,删除
k所在数据项。
d.pop(k,v)
返回键为k的值,若k不存在,返回v。若k存在随后删除k所在
数据项。
d.setdefault(k,v)
如果k存在,返回k对应的值;如果k不存在,添加k:v到字典
中。可选参数v的默认值是None。
d.update(d1)
把字典d1的键/值对更新到d里。如果d1的键值在d中存在,
则修改其对应的值。如果不存在,则添加。

函数

def<函数名>(<参数列表>):
<函数体>
可变数量参数 * 元组传入和 **字典传入
定义函数不需要声明返回值类型

关于标识符解析的LEGB法则
在if、while、for等语句中定义的变量,后续仍可以继续使用,并不产生新的作用域,这一点和C语言不同。只有模块(module),类以及函数(def lambda)才会产生新的作用域。
向上找
修改全局作用域内的变量要用关键字global声明,修改嵌套作用域内的变量要用关键字nonlocal声明。

lambda表达式(而非语句)定义一个匿名函数
<函数名>=lambda<参数列表>:<表达式>
等价于
def<函数名>(<参数列表>):
return<表达式>
虽然只能使用简单语法,但很便捷。
比如在sorted排序时key的赋值时应用广泛。

一个小可爱

题目

我的解答
就是这个//,error了一晚,真的哭了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值